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

R data.table按id与日期实现后向滚动匹配合并的方法

实现方法

你需要的是按id分组匹配早于dta2当前日期的最近dta1记录,直接使用data.table自带的滚动连接功能即可实现,代码如下:

# 首先确保两个表都已按id、date排序(你的示例中已经执行了setorder操作,无需重复执行)
# 执行滚动连接,直接生成符合预期格式的结果
res <- dta1[dta2, 
            .(id, date.x = i.date, date.y = x.date, value), 
            on = .(id, date), 
            roll = TRUE]

# 查看结果
print(res)

逻辑说明

  • on = .(id, date)指定连接键,id为完全匹配键,date为滚动匹配键
  • roll = TRUE表示对date列向前滚动匹配:同id下,自动匹配dta1中小于等于dta2当前日期的最近记录,无匹配时对应字段返回NA
  • 代码中i.date指代右表dta2的date列,x.date指代左表dta1的date列,直接在j参数中定义列名,无需后续额外调整
    运行上述代码得到的结果和你给出的预期输出完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 21:45:04