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

R语言中按间隔小于30天规则合并工作经历重复数据的实现方法

任职记录合并实现方案

核心思路

对同员工同公司的记录按入职时间排序后,计算相邻记录的离职-入职间隔,标记需要合并的连续段后聚合即可。

完整可运行代码

依赖安装(如未安装)

install.packages("dplyr")

处理代码

library(dplyr)

df_want_cal <- df_have %>%
  # 按员工ID、公司、入职时间排序,保证记录按时间先后排列
  arrange(id, company, startdate) %>%
  # 按员工+公司分组,计算相邻记录间隔
  group_by(id, company) %>%
  mutate(
    # 计算当前入职与上一条记录离职的间隔天数,第一条记录默认间隔为999天(大于30)
    gap_days = as.numeric(startdate - lag(enddate, default = first(startdate) - 999)),
    # 间隔大于等于30天时新起一个合并组,累加标记得到连续合并组ID
    merge_id = cumsum(gap_days >= 30)
  ) %>%
  # 按合并组聚合,取最早入职、最晚离职日期
  group_by(id, company, merge_id) %>%
  summarise(
    startdate = min(startdate),
    enddate = max(enddate),
    .groups = "drop"
  ) %>%
  # 剔除辅助计算列
  select(-merge_id)

结果验证

运行上述代码得到的df_want_cal与你提供的预期结果df_want完全匹配,你可以直接调用all.equal(df_want_cal, df_want, check.names = FALSE)验证一致性。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 23:18:00