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

R语言构建用户旅程:按会话分组生成访问路径并统计频次

R语言实现会话访问路径统计方案

实现思路

不需要复杂的多层自连接操作,基于dplyr包分组排序后直接拼接访问路径,代码简洁且运行效率高,完全覆盖两个核心需求:

  • 按会话ID分组、时间戳升序拼接完整访问路径
  • 统计相同路径的会话出现频次

具体实现步骤

1. 加载依赖包、构造样例数据集

首先加载数据处理需要的工具包,按照题目给出的4个会话行为构造测试数据:

# 加载依赖包
library(dplyr)
library(stringr)

# 构造样例用户行为日志
log_data <- tibble(
  `Session/User ID` = c(101,101,101,102,102,103,104,104),
  `Time Stamp` = as.POSIXct(c(
    "2024-01-01 10:00:00", "2024-01-01 10:01:00", "2024-01-01 10:02:00",
    "2024-01-01 10:05:00", "2024-01-01 10:06:00",
    "2024-01-01 10:10:00",
    "2024-01-01 10:15:00", "2024-01-01 10:16:00"
  )),
  Page = c("Page A", "Page B", "Page C",
           "Page B", "Page C",
           "Page A",
           "Page B", "Page C")
)

2. 生成用户路径映射表

按Session/User ID分组,按时间戳升序排序后,将同组的页面名称拼接为完整路径,直接得到要求的映射表:

user_path_map <- log_data %>%
  # 按会话分组、按访问时间升序排序
  group_by(`Session/User ID`) %>%
  arrange(`Time Stamp`, .by_group = TRUE) %>%
  # 拼接访问路径,用>分隔不同页面,可根据业务需求替换分隔符
  summarise(Path = str_c(Page, collapse = " > "), .groups = "drop")

运行后输出的映射表结果如下:

Session/User IDPath
101Page A > Page B > Page C
102Page B > Page C
103Page A
104Page B > Page C

3. 生成路径频次统计表

基于上一步得到的映射表,按路径分组计数即可得到频次统计结果:

path_freq <- user_path_map %>%
  group_by(Path) %>%
  summarise(Frequency = n(), .groups = "drop") %>%
  # 可选:按频次降序排序,方便快速定位高频路径
  arrange(desc(Frequency))

运行后输出的频次表结果如下:

PathFrequency
Page B > Page C2
Page A > Page B > Page C1
Page A1

补充:自连接(self loop join)实现说明

如果需要贴合自连接构建用户旅程的思路,也可以通过偏移自连接的方式实现路径拼接:给每个会话内的访问记录打上访问序号,将序号n和n+1的记录连接后逐步拼接路径。但该方法代码复杂度更高,数据量大时运行效率远低于上述分组拼接方案,无特殊要求不推荐使用。

内容的提问来源于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 18:24:46