在一个大数据集上,我想删除显示与样本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多行,因此我需要另一种方式来做到这一点,而不是逐行说出要删除的内容。 我不确定该怎么做,欢迎提出任何建议。
答案 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
,
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