qua*_*ant 2 r filter data.table
我有以下data.tables
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'))
Run Code Online (Sandbox Code Playgroud)
我想dt_1基于过滤dt_2.最后我想结束
id v1 v2
1: fs b f
Run Code Online (Sandbox Code Playgroud)
因此,过滤掉其中包含的确切行dt_1dt_2
这个操作
dt_1[!(id%in%dt_2$id & v1%in%dt_2$v1)]
Run Code Online (Sandbox Code Playgroud)
不起作用,因为它也需要dt_2$id和dt_2$v1和的内部组合
dt_1[!dt_2] 抛出错误.
有任何想法吗 ?
您需要指定您加入的内容:
dt_1[!dt_2, on=names(dt_2)] # "easier" than intersect(names(dt_1), names(dt_2)) because all dt_2 variables are in dt_1 but in a more general context the latter will be preferable
# id v1 v2
#1: fs b f
Run Code Online (Sandbox Code Playgroud)