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

R语言基于两列填充Activity列及连续去重方法

R语言实现用户访问路径Activity列生成方案

核心使用dplyr包完成分组排序、滞后值计算、连续重复值去重操作,全程按会话独立计算,避免跨会话数据干扰。


实现步骤

  • 先按Session分组、Row#升序排序,保证每个会话内的点击行为顺序和原始数据一致
  • 按规则逐行生成初始Activity值:
    • 若当前行Click取值为Enter,Activity直接取当前行Page值
    • 若当前行Page和同会话内上一行Page值一致,Activity取当前行Click值
    • 其余非Enter、且页面发生跳转的场景,Activity取当前行Click值(该场景对应跨页面点击行为,符合路径记录逻辑)
  • 按会话分组,对连续重复的Activity值做去重,仅保留第一条记录,满足连续相同Click仅留1条的要求
  • 最终筛选输出Session、Activity两列即可

代码实现

首次运行需先安装依赖包:

install.packages("dplyr")

核心计算代码,将代码中的df替换为你自己的原始数据集变量名即可运行:

library(dplyr)

result <- df %>%
  # 按会话分组,按行号排序保证行为顺序正确
  group_by(Session) %>%
  arrange(Row#, .by_group = TRUE) %>%
  # 逐行计算初始Activity取值
  mutate(
    lag_page = lag(Page, default = ""),
    Activity = case_when(
      Click == "Enter" ~ Page,
      Page == lag_page ~ Click,
      TRUE ~ Click
    )
  ) %>%
  # 标记连续重复的Activity值,过滤重复项
  mutate(
    lag_activity = lag(Activity, default = ""),
    is_consecutive_dup = Activity == lag_activity
  ) %>%
  filter(!is_consecutive_dup) %>%
  # 保留最终需要的输出列
  select(Session, Activity) %>%
  ungroup()

注意事项

  • 所有计算均在单个Session分组内完成,不会出现跨会话连续值判断的错误
  • 针对连续2条及以上相同Click的场景,代码会自动识别连续重复的Activity值,仅保留第一条记录,和规则要求完全匹配
  • 如果原始数据存在缺失值、异常Click取值,直接在case_when判断逻辑中新增对应规则即可适配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 00:54:29