删除一组特定的共同价值观

时间:2018-12-28 13:56:22

标签: r

在一个大数据集上,我想删除显示与样本A相同的ID的行。然后,我想从样本A中删除所有行。

 feature id sample
      a  1      A
      b  1      B
      c  2      A
      d  2      C
      e  3      A
      f  4      B
      g  4      C
      h  5      C
      i  5      C

输出应为:

 feature id sample
      f  4      B
      g  4      C
      h  5      C
      i  5      C

由于我的数据集有8000多行,因此我需要另一种方式来做到这一点,而不是逐行说出要删除的内容。 我不确定该怎么做,欢迎提出任何建议。

3 个答案:

答案 0 :(得分:3)

假设您要删除所有与“ A”中的id相同的id行,您可以这样做

df[!df$id %in% df$id[df$sample == "A"], ]

#  feature id sample
#6       f  4      B
#7       g  4      C
#8       h  5      C
#9       i  5      C

dplyr

library(dplyr)
df %>%  filter(!id %in% id[sample == "A"])

答案 1 :(得分:0)

这是使用ave

的基本R想法
with(dd, ave(sample, id, FUN = function(i)!'A' %in% i))

因此,将其用于索引

dd[as.logical(with(dd, ave(sample, id, FUN = function(i)!('A' %in% i)))),]
#  feature id sample
#6       f  4      B
#7       g  4      C
#8       h  5      C
#9       i  5      C

答案 2 :(得分:0)

我们可以使用subset

subset(df, !id %in% id[sample == "A"])
#    feature id sample
#6       f  4      B
#7       g  4      C
#8       h  5      C
#9       i  5      C