R语言中如何按ID分组为数据框每14天周期生成唯一标识值
R按分组为每14天周期打标实现(兼容日期跳空场景)
核心实现代码
不需要依赖行号计数,完全基于日期差值计算,天然适配日期缺失、跳空的情况:
library(dplyr) # 处理数据 data <- data %>% group_by(id) %>% mutate( # 以当前id下的最早日期为周期起点,计算日期间隔 days_from_start = as.numeric(date - min(date)), # 每14天划分为一个section,从1开始编号 section = (days_from_start %/% 14) + 1 ) %>% ungroup() %>% select(-days_from_start) # 移除中间计算列
逻辑说明
- 分组后取每个
id对应的最小日期作为该组的周期计算起点,满足不同id独立计算周期的需求 - 日期差直接做整数除法划分周期:间隔0-13天标记为section1,14-27天标记为section2,以此类推
- 计算完全基于日期本身的差值,和数据框的行顺序、是否存在缺失日期无关,完全适配跳空数据场景
可选调整
- 如果需要section标识带id前缀方便区分,把section的计算逻辑替换为
section = paste0(id, "_", (days_from_start %/%14)+1)即可 - 如果不需要从每个id的最早日期开始算周期,而是要对齐固定的全局锚点日期,把
min(date)替换为对应的锚点Date对象即可,比如as.Date("2021-01-01")
内容的提问来源于stack exchange,提问作者TRS6
相关产品推荐
相关产品推荐

