从数据框中删除匹配变量而不使用merge()

时间:2016-07-08 12:09:34

标签: r filter

我有两个数据框,一列:originId

我的目标是从data中删除originId originId等于filter

}的所有行

是否有一步法在R中执行此任务而不使用merge()然后进行子集化?如果是这样,会是什么?

> dim(filter)
[1] 3790    1
> dim(data)
[1] 100110      1

> head(filter)
      originId
454  359720489
1519 359720489
2584 359720489
3649 359720489
4714 359720489
7456  -5378234


> head(data)
  originId
1 -5378234
2 -5357893
3 -5357892
4 -5355561
5 -5355558
6 -5355320

2 个答案:

答案 0 :(得分:0)

data[!duplicated(data[data$originId,])]

答案 1 :(得分:0)

您可以尝试:

a <- c(1, 2, 1, 3, 4, 1)
b <- c(1, 5, 6)
a[ !a %in% b ]
[1] 2 3 4

a对应于您的databfilter向量。因此,必须在1中过滤a。您可以使用ba的{​​{1}}中找到所有号码。输出是一个逻辑向量,由%in%转换。输出是!的子集,没有a中的数字。

在您的情况下,您应键入:

b