0

我有两个大表,它们有一些共同的字段(但有不同的字段名称)。查找(和删除)此类常见记录的最简单/最快的方法是什么?

例如,我有

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)])

(对不起,愚蠢的填充) 查找AND的所有记录

的语法是什么?(好的,如果需要,我可以先重命名字段以使要比较的字段具有相同的名称)data.tablet1field2=t2fieldBt1field3=t2fieldC

提前非常感谢!

4

2 回答 2

3

沿着这些思路 -

setkeyv(dt1,c('dt1field2','dt1field3'))
setkeyv(dt2,c('dt2fieldB','dt2fieldC'))
dt2[dt1, allow.cartesian = TRUE]
于 2013-10-10T18:42:54.357 回答
2

如果它可以让一张表只有唯一值:

setkeyv(dt1, names(dt1)[2:3])
setkeyv(dt2, names(dt2)[2:3])
dt2[dt1, allow.cartesian=TRUE]

否则,我认为

dt2[!dt1, allow.cartesian=TRUE] 

将适用于每个单独的表。

于 2013-10-10T18:44:27.397 回答