我有一个非常大但与此非常相似的数据框:
df <- data.frame(Group = rep(c('A', 'B', 'C', 'D'), 50),
Number = sample(1:100, 200, replace = T))
Group Number
A 52
B 74
C 22
D 90
A 7
B 93
C 50
D 10
A 31
B 19
我有另一个名为“remove”的数据框,如下所示:
>remove
Group Number
A 52
C 22
B 93
D 10
如何对df数据进行子集,以便在“remove”中排除所有具有Group和Number值的行以获取以下数据帧?该文件非常大,因此我无法手动输入要排除的值。 期望的输出:
Group Number
B 74
D 90
A 7
C 50
A 31
B 19
谢谢!
答案 0 :(得分:7)
您可以使用%in%
df <- df[!(df$Number %in% remove$Number),]
如果%in%
位于向量TRUE
中, df$Number
将返回remove
。由于我们需要补码,我们首先用!
否定该集。
答案 1 :(得分:0)
对于更复杂的排除项,您可以在两个数据框(即Group + Number)中创建一个唯一列,并根据Christopher描述的方法寻求排除。