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

R语言实现调整后group_by逻辑并生成分组列的方法咨询

R语言实现同姓名分任职段分组方案

你需要的分组逻辑本质是识别连续出现的同姓名序列块,无需额外安装扩展包,用dplyr自带函数即可实现,也可以用data.table的内置函数快速完成。

dplyr实现方法

核心思路是用lag()对比相邻行的姓名,再通过cumsum()累加触发新分组的标记生成任职段编号:

library(dplyr)
df <- tibble(
  name = c("Jose","Jose", "Maria","Maria","Jose","Jose","Jose")
)

adjusted_df <- df %>%
  # 一行代码生成分组编号
  mutate(number = cumsum(name != lag(name, default = first(name))) + 1)

运行后得到的adjusted_df完全匹配你给出的期望输出,后续直接用group_by(name, number)即可按不同任职段分组聚合。

注意:运行前需要确保你的数据集已按任职时间升序排序,否则连续块的识别会出错。

更简洁的data.table实现

如果常用data.table,可以直接用内置的rleid()函数,专门用于生成连续序列的分组ID:

library(data.table)
# 转换为data.table对象
setDT(df)
# 直接生成分组编号
df[, number := rleid(name)]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 17:06:04