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

使用data.table按分组实现日期间合并,重叠任期时保留重复行

data.table 范围合并解决方案

你需要的是非等值范围连接,data.table原生支持该操作,代码简洁且执行效率很高,具体实现如下:

实现代码

library(data.table)

# 1. 执行非等值连接匹配经理
res = DT[manager_DT,
         # 连接条件:门店相同,且观测日期落在经理任期范围内
         on = .(Store, Date >= min_date, Date <= max_date),
         # 指定返回列,x.Date代表取DT表的原始日期字段
         .(Store, Date = x.Date, Manager),
         # 允许生成笛卡尔积(重叠任期会自动扩行)
         allow.cartesian = TRUE]

# 2. 按门店、日期排序,和你给出的期望输出格式对齐
setorder(res, Store, Date, Manager)

结果说明

运行后得到的res就是你需要的「日期×门店×经理」维度的唯一观测:

  • 任期无重叠的日期每个门店仅保留1行对应经理
  • 任期重叠的日期会自动复制为多行,每行对应一名在职经理
  • 直接返回单个Manager字段,不需要额外拼接处理

注意事项

你示例给出的manager_DT存在年份笔误,把对应经理的任期起止日期调整为2002年的对应日期,即可和你给出的期望输出完全匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 21:24:01