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

使用R语言dplyr包计算客户行为分组序列的问题求助

R客户行为序列计算解决方案

核心使用dplyr内置的dense_rank()函数实现需求,该函数会为相同取值分配相同排名,且排名连续递增,刚好匹配两类序列的计算逻辑。

完整实现代码

library(dplyr)

result <- sample_data %>%
  # 先按日期全局排序,保证序列严格按时间顺序递增
  arrange(activity_date) %>%
  # 计算通用序列:按客户分组,对日期做稠密排名
  group_by(customer_id) %>%
  mutate(general_sequence = dense_rank(activity_date)) %>%
  ungroup() %>%
  # 计算规则序列:按客户+行为类型分组,对日期做稠密排名
  group_by(customer_id, activity) %>%
  mutate(rule_sequence = dense_rank(activity_date)) %>%
  ungroup()

逻辑说明

  • 原代码使用1:n()按行号计数,导致同一天的多条记录拿到不同序列值,替换为dense_rank(activity_date)后,同一分组下相同日期的记录会分配相同序列值,仅当日期变更时序列值+1,符合通用序列的要求。
  • 规则序列仅需要调整分组维度为customer_id + activity,复用dense_rank()对日期排名即可,同一客户同一行为下相同日期对应相同序列值,出现新日期时序列自动递增。

最终输出的result与需求描述的计算逻辑完全匹配。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 10:45:04