我试图更多地了解滚动连接的工作方式并且有些困惑,我希望有人可以为我澄清这一点。举一个具体的例子:
dt1 <- data.table(id=rep(1:5, 10), t=1:50, val1=1:50, key="id,t")
dt2 <- data.table(id=rep(1:5, 2), t=1:10, val2=1:10, key="id,t")
我希望这会产生一个很长data.table
的值dt2
滚动:
dt1[dt2,roll=TRUE]
相反,正确的方法似乎是:
dt2[dt1,roll=TRUE]
有人可以向我解释更多关于加入是如何data.table
工作的,因为我显然没有正确理解它。我认为这dt1[dt2,roll=TRUE]
对应于 sql 等价物select * from dt1 right join dt2 on (dt1.id = dt2.id and dt1.t = dt2.t)
,除了添加的功能 locf。
此外,文档说:
X[Y] is a join, looking up X's rows using Y (or Y's key if it has one)
as an index.
这使得似乎只有 X 中的东西应该返回,并且正在完成的连接是内部连接,而不是外部连接。如果roll=T
那个特殊id
情况不存在,那该dt1
怎么办?玩得更多,我无法理解该列中放置了什么值。