gpt4 book ai didi

R data.table 加入左右表之间的不平等条件

转载 作者:行者123 更新时间:2023-12-04 11:30:41 27 4
gpt4 key购买 nike

我看到了关于 join with inequality conditions 的问题 R data.table join with inequality conditions我问自己,我们将如何继续连接两个 data.tables,这两个 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 中获取与 dt2 中的行在变量 V1 上匹配但具有 dt$V2小于 dt2$V2

你会怎么做?

最佳答案

您可以在此处使用 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

关于R data.table 加入左右表之间的不平等条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19677488/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com