R data.table连接左右表之间的不等式条件

Sim*_* Z. 3 r data.table

我看到了关于加入不等式条件的问题R data.table加入不等式条件我问自己,我们将如何继续加入两个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
Run Code Online (Sandbox Code Playgroud)

现在,从dt该匹配的行中获取dt2变量上的行,V1但是dt$V2小于dt2$V2.

你会怎么做?

The*_*Man 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
Run Code Online (Sandbox Code Playgroud)