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
相关产品推荐
相关产品推荐

