如果我有两个data.tables,dt1和dt2,我希望列之间的匹配数使用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.
我想你在寻找fintersect:
fintersect(dt1,dt2)
Run Code Online (Sandbox Code Playgroud)
得到:
Run Code Online (Sandbox Code Playgroud)V1 V2 1: d 4 2: e 5
要获取行数,请添加[, .N]:
fintersect(dt1,dt2)[, .N]
Run Code Online (Sandbox Code Playgroud)
这使:
Run Code Online (Sandbox Code Playgroud)[1] 2