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

如何按名称分组生成日期序列:重复日期保持序列值不变

解决方案

要实现同一name下相同date对应相同序列值、仅date变化时序列递增的需求,可通过在name分组内对date做分组内的顺序标记来完成,以下是两种简洁有效的方法:

方法1:使用dense_rank()生成稠密排名

dense_rank()会为分组内相同的date分配相同的排名,不同date按顺序递增,适合直接实现需求:

library(dplyr)

df <- data.frame(
  name = c('Jack', 'Jack', 'Jack', 'Jill', 'Jill', 'Jill', 'Jill'),
  date = c('01-01-2023', '01-01-2023', '01-02-2023', '01-01-2023', '01-02-2023', '01-02-2023', '01-03-2023')
)

df %>%
  group_by(name) %>%
  mutate(date_sequence = dense_rank(date)) %>%
  ungroup()

方法2:基于unique(date)匹配顺序

如果需要严格遵循date在每组内的出现先后顺序(而非字符排序逻辑),可以用match()匹配每组内的唯一date序列:

df %>%
  group_by(name) %>%
  mutate(date_sequence = match(date, unique(date))) %>%
  ungroup()

两种方法都能输出你期望的结果:

namedatedate_sequence
Jack01-01-20231
Jack01-01-20231
Jack01-02-20232
Jill01-01-20231
Jill01-02-20232
Jill01-02-20232
Jill01-03-20233

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 20:30:43