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

R中如何通过两次group_by分组统计行数并计算每人每场次正确率

错误原因

  • 连续两次单独调用group_by()会覆盖前一次的分组规则,最终仅按session_number分组,无法实现按「受试者+session」同时分组的需求
  • 管道操作中使用df$name、df$y的写法会直接提取整个数据集的对应列,不会读取当前分组的子集数据,导致计算逻辑完全错误
  • count()是返回分组计数汇总表的函数,不能直接在mutate()中作为分母使用,获取当前分组的总行数应该用n()函数

正确实现

方案1:保留原数据集所有行,新增正确率列

如果需要保留每一条试次的原始数据,同时在每行追加对应分组的正确率,使用mutate():

library(dplyr)
by_name_by_session <- df %>%
  group_by(name, session_number) %>%
  mutate(rate = sum(y)/n())

方案2:仅输出正确率汇总表

如果不需要保留原始试次数据,只需要每位受试者每个session对应的正确率结果,使用summarise()更简洁:

rate_summary <- df %>%
  group_by(name, session_number) %>%
  summarise(
    rate = sum(y)/n(),
    .groups = "drop"
  )

以上代码运行后,你示例数据中Tom第一个session的正确率计算结果为0.5,符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 05:36:08