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

R语言:如何实现跨学生的会话(session)连续编号而非分组重置

解决方案

你可以分两步实现全局连续的会话编号:先在每个学生组内计算会话切换标记,再通过累计前面所有学生的会话总数生成全局偏移量,最后叠加得到连续编号。

修改后的代码如下:

data1 <- data %>%
  arrange(Name, Time) %>%
  group_by(Name) %>%
  # 计算组内的会话编号(从0开始)
  mutate(group_session = cumsum(c(0, diff(Time) > minutes(30)))) %>%
  # 统计每个学生的总会话数
  mutate(session_count = max(group_session) + 1) %>%
  ungroup() %>%
  # 计算全局偏移量:前面所有学生的会话总数之和,第一个学生偏移量为0
  mutate(global_offset = cumsum(lag(session_count, default = 0))) %>%
  # 组内编号 + 偏移量 = 全局连续会话编号
  mutate(session_id = group_session + global_offset) %>%
  # 可选:移除中间辅助列
  select(-group_session, -session_count, -global_offset)

代码说明

  • group_session:保留你原有的组内会话计数逻辑,每个学生的会话从0开始
  • session_count:统计每个学生的总会话数量
  • global_offset:用cumsum和lag计算每个学生的起始偏移,比如第二个学生的偏移等于第一个学生的总会话数,确保编号衔接不中断
  • session_id:最终的全局连续会话编号,会在所有学生间递增,不会随学生分组重置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 03:35:16