【发布时间】:2019-02-23 15:29:37
【问题描述】:
我有两个 data.tables DT1 和 DT2,其中 DT1 可能比 DT2 更大且列更多。我想选择DT1 中的行,其中DT1 的两列在DT2 的两列的同一行中完全匹配。例如
DT1 = data.table(x=rep(c("b","a","c"),each=3), y=c(1,3,6), z=1:9)
DT2 = data.table(f=c("a","b"), g=c(1,3))
我正在寻找的输出 DT1sub 是
x y z
1: a 1 4
2: b 3 2
我的问题是,当我尝试对 DT1 进行子集化时,我也会得到那些只有一列匹配的行
> DT1[x%in%DT2$f & y%in%DT2$g]
# x y z
# 1: b 1 1
# 2: b 3 2
# 3: a 1 4
# 4: a 3 5
我可以得到我想要的输出,DT1sub,带有一个笨重的for 循环
DT1sub<-c()
for (i in 1:2)
DT1sub<-rbind(DT1sub,DT1[x==DT2$f[i] & y==DT2$g[i]])
DT1sub
但我想知道是否有更智能的 data.table 版本。这可能很简单,但我无法从example("data.table") 拼凑起来。
【问题讨论】:
标签: r data.table