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

使用R语言dplyr包对连续变量进行聚合操作

嘿,我来帮你搞定这个用dplyr处理参与者预测数据的聚合问题!先把你提到的示例数据补全(假设预测值列叫pred),然后分几种常见的聚合场景给你演示:

首先,先加载dplyr包并构造完整的示例数据:

library(dplyr)

# 补全后的示例数据框
df <- data.frame(
  subjectID = c(rep("p001",4), rep("p002",4), rep("p003",4)),
  target = c(0.1,0.2,0.3,0.4, 0.2,0.3,0.4,0.5, 0.1,0.3,0.4,0.5),
  pred = c(0.08, 0.22, 0.29, 0.41, 0.19, 0.31, 0.38, 0.52, 0.11, 0.28, 0.42, 0.49)
)

场景1:按参与者(subjectID)聚合

如果你想统计每个参与者的整体预测情况(比如预测值的分布、覆盖的target范围),可以这样做:

participant_summary <- df %>%
  group_by(subjectID) %>%  # 按参与者ID分组
  summarize(
    avg_pred = mean(pred),  # 该参与者的平均预测值
    sd_pred = sd(pred),     # 预测值的标准差
    min_target = min(target),  # 该参与者覆盖的最小target值
    max_target = max(target),  # 该参与者覆盖的最大target值
    target_count = n()      # 该参与者完成预测的target数量
  ) %>%
  ungroup()  # 取消分组,避免后续操作受分组影响

print(participant_summary)

场景2:按目标值(target)聚合

如果你想分析每个target值对应的所有参与者预测的共性(比如平均预测偏差、预测离散度),可以按target分组:

target_summary <- df %>%
  group_by(target) %>%  # 按target值分组
  summarize(
    avg_pred_all = mean(pred),  # 所有参与者对该target的平均预测值
    pred_variance = var(pred),  # 预测值的方差
    participant_count = n()     # 针对该target做出预测的参与者数量
  ) %>%
  ungroup()

print(target_summary)

场景3:同时按参与者和target分组(处理重复数据)

如果存在同一参与者对同一个target多次预测的情况,可以用这个方式聚合去重,或者计算该组合的统计值:

subject_target_summary <- df %>%
  group_by(subjectID, target) %>%  # 按"参与者+target"的组合分组
  summarize(
    pred_mean = mean(pred),  # 同一组合下的平均预测值
    pred_count = n()         # 该组合的预测次数
  ) %>%
  ungroup()

print(subject_target_summary)

核心逻辑说明

  • group_by():指定你想要聚合的分组维度,可以是单个或多个变量
  • summarize()(或英式拼写summarise()):定义聚合后要生成的统计列,支持所有常见的统计函数(mean()/sd()/sum()/n()等)
  • ungroup():完成聚合后记得取消分组,避免后续的dplyr操作默认沿用分组规则

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:47:31