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

如何用R按作答结果类型计算受试者平均RT并生成新dataframe

R语言按受试者分组计算不同作答结果的平均反应时

问题核心原因

你之前的代码存在两个核心问题:

  1. 没有按受试者标识分组,计算得到的是整个数据集所有正确试次的总平均,而非每个受试者各自的平均
  2. dplyr管道中使用practice$RT这类带$的写法会直接调用原始数据集的整列数据,忽略管道内的分组逻辑,无法得到分组统计结果

实现代码

以下示例默认你的数据集中受试者标识列名为subject_id,如果实际列名不同请自行替换。

第一步:加载依赖包

library(tidyverse)

第二步:生成汇总表

你可以先得到一个每行对应一位受试者、同时包含正确和错误作答平均RT的宽表:

rt_summary <- practice %>%
  # 按受试者ID、作答结果分组
  group_by(subject_id, Outcome) %>%
  # 计算分组平均RT,na.rm=TRUE避免缺失值导致结果为NA
  summarise(mean_RT = mean(RT, na.rm = TRUE), .groups = "drop") %>%
  # 转换为宽格式,不同作答结果的平均RT单独成列
  pivot_wider(
    names_from = Outcome,
    values_from = mean_RT,
    names_prefix = "mean_"
  )

运行后rt_summary会包含subject_id、mean_Correct、mean_Incorrect三列。

第三步:拆分生成单独的dataframe

如果需要分别生成仅含正确平均RT、仅含错误平均RT的两个独立dataframe,可在上述结果基础上筛选:

# 仅含正确作答平均RT的dataframe
correct_rt_df <- rt_summary %>% select(subject_id, mean_Correct)

# 仅含错误作答平均RT的dataframe
incorrect_rt_df <- rt_summary %>% select(subject_id, mean_Incorrect)

补充说明

如果需要保留原始数据集的所有试次行,同时给每行添加对应受试者、对应作答结果的组平均RT,可使用如下代码:

practice_with_group_rt <- practice %>%
  group_by(subject_id, Outcome) %>%
  mutate(group_mean_RT = mean(RT, na.rm = TRUE)) %>%
  ungroup()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 17:27:03