3

我看到了关于不等式条件R data.table join with 不等式条件的问题,我问自己,我们将如何继续连接两个 data.tables 与这两者之间的不等式条件?

这通常在时间序列中非常有趣,我们希望将一个表 X 与另一个 Y 连接,但连接应该选择 X 中的第一行,该行在小于 Y 中行的时间的时间范围内匹配。

dt <- data.table(rep(c("A", "B", "C"), 4), 5:16)
dt2 <- data.table(rep(c("A", "B", "C"), 4), 1:12)
cbind(dt,dt2)
    V1 V2 V1 V2
 1:  A  5  A  1
 2:  B  6  B  2
 3:  C  7  C  3
 4:  A  8  A  4
 5:  B  9  B  5
 6:  C 10  C  6
 7:  A 11  A  7
 8:  B 12  B  8
 9:  C 13  C  9
10:  A 14  A 10
11:  B 15  B 11
12:  C 16  C 12

现在,取与变量上dt的行匹配但小于的行。dt2V1dt$V2dt2$V2

你会怎么做?

4

1 回答 1

6

你可以在roll这里使用这个论点。

timeresolution = 0.01
dt[,V2 := V2 - timeresolution]

setkeyv(dt,c("V1","V2"))
setkeyv(dt2,c("V1","V2"))
dt2[dt,roll=-Inf]

> dt2[dt,roll=-Inf]
    V1 V2 V2.1
 1:  A  4    5
 2:  A  7    8
 3:  A 10   11
 4:  A 13   14
 5:  B  5    6
 6:  B  8    9
 7:  B 11   12
 8:  B 14   15
 9:  C  6    7
10:  C  9   10
11:  C 12   13
12:  C 15   16
于 2013-10-30T08:51:12.127 回答