R:排除数据框中具有预设值列表的行

时间:2013-11-06 17:16:08

标签: r dataframe extract subset rows

我有一个非常大但与此非常相似的数据框:

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

谢谢!

2 个答案:

答案 0 :(得分:7)

您可以使用%in%

执行此操作
df <- df[!(df$Number %in% remove$Number),]
如果%in%位于向量TRUE中,

df$Number将返回remove。由于我们需要补码,我们首先用!否定该集。

答案 1 :(得分:0)

对于更复杂的排除项,您可以在两个数据框(即Group + Number)中创建一个唯一列,并根据Christopher描述的方法寻求排除。