在R中计算每个实验块的反应时间中位数并绘制变化趋势图
R分析反应时间数据:计算各实验块中位数并绘制趋势图
1. 先明确数据结构(附示例数据)
假设你的数据框是宽格式:每一列对应一个实验块(block1到block10),每列有3个值(对应该块的3次按键反应时间)。先模拟一份示例数据方便你对照:
# 设置随机种子保证结果可重复 set.seed(123) rt_data <- data.frame( block1 = rnorm(3, mean = 300, sd = 50), block2 = rnorm(3, mean = 280, sd = 40), block3 = rnorm(3, mean = 260, sd = 35), block4 = rnorm(3, mean = 250, sd = 30), block5 = rnorm(3, mean = 245, sd = 25), block6 = rnorm(3, mean = 240, sd = 25), block7 = rnorm(3, mean = 238, sd = 22), block8 = rnorm(3, mean = 235, sd = 20), block9 = rnorm(3, mean = 232, sd = 18), block10 = rnorm(3, mean = 230, sd = 15) )
2. 计算每个实验块的中位数
用apply函数按列计算中位数,再转换为适合绘图的长格式数据框:
# 按列计算中位数 block_medians <- apply(rt_data, 2, median) # 转换为绘图用的数据框 median_df <- data.frame( block = factor(1:10, levels = 1:10), # 固定块号顺序 median_rt = as.numeric(block_medians) )
3. 绘制中位数趋势图
使用ggplot2包绘图,先安装(首次使用)再加载:
# 安装并加载绘图包 install.packages("ggplot2") library(ggplot2) # 绘制折线+点图展示趋势 ggplot(median_df, aes(x = block, y = median_rt, group = 1)) + geom_line(color = "darkblue", linewidth = 1) + # 折线展示趋势 geom_point(color = "red", size = 3) + # 标记每个块的中位数 labs( title = "各实验块中位数反应时间变化趋势", x = "实验块编号", y = "中位数反应时间(ms)" ) + theme_minimal() # 简洁美观的主题
如果你的数据是长格式(每行是一次按键记录)
如果你的数据是每行对应一次按键,包含block(块号)和rt(反应时间)两列,用dplyr分组计算中位数:
# 安装并加载dplyr install.packages("dplyr") library(dplyr) # 示例长格式数据 long_rt_data <- data.frame( block = rep(1:10, each = 3), rt = c(rnorm(3,300,50), rnorm(3,280,40), rnorm(3,260,35), rnorm(3,250,30), rnorm(3,245,25), rnorm(3,240,25), rnorm(3,238,22), rnorm(3,235,20), rnorm(3,232,18), rnorm(3,230,15)) ) # 分组计算中位数 long_median_df <- long_rt_data %>% group_by(block) %>% summarize(median_rt = median(rt)) # 绘图代码和之前一致 ggplot(long_median_df, aes(x = block, y = median_rt, group = 1)) + geom_line(color = "darkblue", linewidth = 1) + geom_point(color = "red", size = 3) + labs(title = "各实验块中位数反应时间变化趋势", x = "实验块编号", y = "中位数反应时间(ms)") + theme_minimal()
内容的提问来源于stack exchange,提问作者Rory Holden
相关产品推荐
相关产品推荐

