首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从data.frames列表中删除data.frames中的特定重复观测

从data.frames列表中删除data.frames中的特定重复观测
EN

Stack Overflow用户
提问于 2017-02-22 13:07:58
回答 1查看 36关注 0票数 1

我有一个data.frames列表,如下所示:

代码语言:javascript
复制
  $`42`
     Val     Replicate Index     
   26.92        R2    42
   26.92        R3    42
   28.68        R1    42
   28.68        R4    42

 $`43`
    Val      Replicate Index
  28.92        R3    43
  29.28        R2    43
  30.11        R1    43
  30.11        R4    43

 $`44`
    Val  Replicate Index
   24.67       R3    44
   24.70       R2    44
   25.70       R1    44
   25.70       R4    44   

 $`45`
    Val  Replicate Index
  30.57       R1    45
  30.57       R4    45
  32.39       R2    45
  32.81       R3    45

我想做的是:如果在"Val“列中”R4“中有一个重复的元素,那么它们都将从"Val”列中删除。

例如,在名为data.frame的45中,由于30.57 (R1)等于30.57 (R4),因此将只保留32.39 (R2)和32.81 (R3)。因此,data.frame 45的期望输出是:

代码语言:javascript
复制
 $`45`
    Val  Replicate Index
  32.39       R2    45
  32.81       R3    45      

我试着用:

代码语言:javascript
复制
lapply(mydf, function(x) x[!duplicated(x[c("Val")]), ])    

但不幸的是,它删除了列"Val“中所有重复的元素,而不是与”复制“列中的R4进行比较。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-22 13:36:53

如果这只与"R4“值相关,那么

代码语言:javascript
复制
df[!((duplicated(df$Val) |  duplicated(df$Val, fromLast=TRUE)) &
   df$Val[df$Replicate == "R4"]), ]

将保留一些data.frame df的非重复观测以及所有非R4观测。然后,将其放入lapply

代码语言:javascript
复制
mynonDupeList <- lapply(myList,
                    function(i) i[!((duplicated(df$Val) | duplicated(i$Val, fromLast=TRUE))
                                  & i$Val[i$Replicate == "R4"]), ]))

应该能起作用。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42392362

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档