我有两个大表,有一些共同的字段(但有不同的字段名称)。查找(和删除)此类常见记录的最简单/最快方法是什么?
例如,我有
set.seed(2)
dt1 <- data.table(dt1field1=1:9, dt1field2=LETTERS[runif(9,1,5)], dt1field3=letters[runif(9,12,15)])
dt2 <- data.table(dt2field1=1:10, dt2fieldB=LETTERS[runif(10,1,5)], dt2fieldC=letters[runif(10,12,15)])
(抱歉傻瓜)
查找data.table
和t1field2=t2fieldB
所有记录的t1field3=t2fieldC
语法是什么? (好吧,如果需要,我可以先重命名字段,使其与被比较的字段具有相同的名称)
提前多多感谢!
答案 0 :(得分:3)
这些方面的东西 -
setkeyv(dt1,c('dt1field2','dt1field3'))
setkeyv(dt2,c('dt2fieldB','dt2fieldC'))
dt2[dt1, allow.cartesian = TRUE]
答案 1 :(得分:2)
如果一个表只有唯一值:
setkeyv(dt1, names(dt1)[2:3])
setkeyv(dt2, names(dt2)[2:3])
dt2[dt1, allow.cartesian=TRUE]
否则,我认为
dt2[!dt1, allow.cartesian=TRUE]
适用于每张桌子。