You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用data.table按晚于目标时间的最近时间点合并两个数据集

解决方法

你需要修改滚动连接的roll参数即可实现需求:你之前使用的roll="nearest"会匹配时间距离最近的记录,不管该记录早于还是晚于y表的时间,因此会出现不符合要求的结果。

要实现仅匹配x表中晚于等于y表时间的最近记录,将roll参数设置为-Inf即可,完整代码如下:

require(data.table)
setDT(x)
setDT(y)

x[, reference.x := date.time] # 用于校验连接结果的参考字段

# 滚动连接,仅匹配x表date.time >= y表date.time的最近记录
results <- x[y, on = "date.time", roll = -Inf]

# 若需要剔除y表中无对应x匹配的记录,可添加nomatch=0参数
# results <- x[y, on = "date.time", roll = -Inf, nomatch = 0]

参数说明

  • roll = -Inf:限定连接时仅查找y表时间对应的x表中大于等于该时间的最近记录,不会匹配时间更早的记录,完全符合你的业务规则。
  • 上述代码使用了on参数显式指定连接键,不需要提前设置表的key,逻辑更清晰,也不会修改原表的排序属性。

内容的提问来源于stack exchange,提问作者kpm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 19:54:01