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

R语言如何按id分组统计每个id对应的连续活动日期?

按id分组计算连续日期的实现方法

你之前的代码没有生效是因为group_by需要和mutate搭配才能让计算逻辑作用在每个分组内,而不是全局生效,以下是两种可直接运行的实现方案:

使用dplyr包实现(推荐,语法更清晰)

首先确保已经安装并加载dplyr:

# 未安装的话先运行 install.packages("dplyr")
library(dplyr)

df <- df %>%
  # 按id分组
  group_by(id) %>%
  # 确保每个分组内的日期按升序排列,避免数据乱序导致计算错误,已排序可省略该步
  arrange(activitydate, .by_group = TRUE) %>%
  # 组内计算连续日期标识,逻辑和你原写法一致
  mutate(consecutive = c(NA, diff(activitydate) == 1)) %>%
  # 计算完成后解组,不影响后续其他操作
  ungroup()

如果你的业务逻辑需要每个id的第一条记录的consecutive值为FALSE而非NA,只需要把mutate行内的NA改成FALSE即可。

基础包实现(无需加载额外依赖)

如果你不想安装第三方包,可以用基础包的ave函数实现分组计算:

df$consecutive <- ave(df$activitydate, df$id, FUN = function(x) c(NA, diff(x) == 1))

以上两种方案运行后,都会在你的数据集中生成符合要求的分组连续日期标识。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 11:36:04