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

如何对DataFrame中受试者的连续相同试验分组求均值并编号?

解决方法

你可以用dplyr或者data.table包实现需求,核心是先识别每个受试者下连续相同的Event Full分组,再对每组计算均值并编号。

方法一:使用dplyr包

library(dplyr)

# 处理数据
result <- example %>%
  # 按受试者分组
  group_by(Subject) %>%
  # 生成连续相同Event的组编号:当前行Event与前一行不同时,累加计数
  mutate(Num = cumsum(`Event Full` != lag(`Event Full`, default = first(`Event Full`))) + 1) %>%
  # 按受试者、组编号、Event分组,计算Score均值
  group_by(Subject, Num, `Event Full`) %>%
  summarise(Score = mean(Score), .groups = "drop")

# 查看结果
result

方法二:使用data.table包(更简洁)

library(data.table)

# 转换为data.table格式
setDT(example)

# 按受试者+连续Event组分组,计算均值并生成组编号
result <- example[, .(Num = .GRP, Score = mean(Score)), 
                  by = .(Subject, rleid(`Event Full`), `Event Full`)][, 
                  rleid := NULL]

# 查看结果
result

关键逻辑说明

  • 两种方法的核心都是识别连续相同的Event Full片段:
    • dplyr中用lag()对比当前行与前一行的Event Full,配合cumsum()生成连续组的编号;
    • data.table中直接用rleid()函数,它会为连续相同的观测生成唯一组ID,适配这类场景。
  • 按「受试者+连续组ID」分组计算均值,自动区分同一受试者下非连续的相同标签组。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 16:03:06