根据另一个数据表过滤数据表

时间:2018-05-15 13:38:34

标签: r filter data.table

我有以下data.table s

library(data.table)


 dt_1 <- data.table(id = c('cg','fs','fs'),
                 v1 = c('a','a','b'),
                 v2 = c('d','e','f'))

dt_2 <- data.table(id = c('cg','fs','cg'),
                   v1 = c('a','a','b'))

我想基于dt_1过滤dt_2。最后我想结束

   id v1 v2
1: fs  b  f

因此,请过滤掉dt_1

中包含的dt_2 完全

此操作

dt_1[!(id%in%dt_2$id & v1%in%dt_2$v1)]

不起作用,因为它还需要dt_2$iddt_2$v1的内部组合以及此

dt_1[!dt_2]会抛出错误。

有什么想法吗?

2 个答案:

答案 0 :(得分:6)

您需要指定您要加入的内容:

struct

答案 1 :(得分:4)

我们可以使用anti_join

library(dplyr)
anti_join(dt_1, dt_2)
#  id v1 v2
#1 fs  b  f

请注意,如果列名相同,我们可以使用data.table::fsetdiff

fsetdiff(dt_1, dt_2)