考虑以下滚动连接:
require(data.table)
dtx = data.table(name.x = c("a", "a", "b", "b"), time.x = c(2, 4, 6, 8), info.x = c(2, 4, 6, 8))
dti = data.table(name.i = c("a", "a", "b", "b"), time.i = c(1, 3, 5, 7), info.i = c(1, 3, 5, 7))
dtz = dtx[dti, list(name.i = name.i, name.x = name.x, time.i = time.i, time.x = time.x, info.i = info.i, info.x = info.x),
on = c(name.x = "name.i", time.x = "time.i"), roll = -1]
print(dtz)
# name.i name.x time.i time.x info.i info.x
#1: a a 1 1 1 2
#2: a a 3 3 3 4
#3: b b 5 5 5 6
#4: b b 7 7 7 8
除time.x列外,所有列都有意义。我原以为它包含值2,4,6,8。事实上,在dtx中甚至不存在值1,3,5,7。
显然time.x已被time.i替换,并且已经以某种方式完成,以便将NOCB(下一个观察结果)逻辑表示为常规连接。
我只是想知道这是否是预期的行为,我们将失去time.x列?因为卷的文档中没有提到它,并且打破了卷和常规连接之间的一致性。
(我使用data.table 1.9.6 btw)