两个data.tables匹配列数

Set*_*eth 3 r data.table

如果我有两个data.tables,dt1dt2,我希望列之间的匹配数使用if then then逻辑.如果dt1$V1==dt$V2那么dt$V1 == dt$V2呢?但这是if-then声明按比赛分组的关键dt1$V1 == dt$V2.我想使用data.table来提高效率,因为我实际上有一个大型数据集.

dt1 <- data.table(c("a","b","c","d","e"), c(1:5))
dt2 <- data.table(c("a","d","e","f","g"), c(3:7))
Run Code Online (Sandbox Code Playgroud)

在这个虚拟示例中,V1之间有3个匹配,但V2中只有两个匹配.所以答案(nrow或许,如果我是子集),将是2.

Jaa*_*aap 6

我想你在寻找fintersect:

fintersect(dt1,dt2)
Run Code Online (Sandbox Code Playgroud)

得到:

   V1 V2
1:  d  4
2:  e  5
Run Code Online (Sandbox Code Playgroud)

要获取行数,请添加[, .N]:

fintersect(dt1,dt2)[, .N]
Run Code Online (Sandbox Code Playgroud)

这使:

[1] 2
Run Code Online (Sandbox Code Playgroud)