如何从60名受试者中生成3人分组并计算组决策的和与均值?
解决R语言分组计算决策值的问题
没问题,我来帮你完成从打乱分组到计算每组决策值和与均值的完整流程!
步骤1:准备数据与打乱受试者
你已经完成了打乱受试者的代码,这里再确认下:
# 生成60名受试者的ID students <- 1:60 # 打乱顺序 rand_students <- sample(students, length(students))
假设你已经有了对应60名受试者的决策值向量(比如命名为decisions,顺序和原始students的ID对应),接下来就可以分组计算了。
步骤2:分组并提取决策值
我们可以用split()配合gl()来把打乱后的ID分成20个每组3人的小组:
# 将打乱后的受试者ID分成20个每组3人的小组 grouped_students <- split(rand_students, gl(n = 20, k = 3))
这里gl(20, 3)会生成一个包含20个水平、每个水平重复3次的向量,split()会根据这个向量把rand_students拆分成20个元素的列表,每个元素对应一个3人组的ID。
步骤3:计算每组的决策值之和与均值
用sapply()遍历每个小组,提取对应的决策值并计算统计量:
# 计算每组决策值的总和 group_sums <- sapply(grouped_students, function(group) { sum(decisions[group]) }) # 计算每组决策值的均值 group_means <- sapply(grouped_students, function(group) { mean(decisions[group]) })
可选:整理成直观的数据框
如果想把分组信息、成员ID、统计结果整合到一起,可以生成一个数据框:
group_results <- data.frame( 组编号 = paste0("组", names(grouped_students)), 成员ID = sapply(grouped_students, paste, collapse = ", "), 决策值总和 = group_sums, 决策值均值 = round(group_means, 2) # 保留两位小数更美观 ) # 查看结果 print(group_results)
注意事项
如果你的决策值存储在数据框中(比如数据框名为exp_data,决策值列名为decision),只需要把代码里的decisions[group]替换成exp_data$decision[group]即可。
内容的提问来源于stack exchange,提问作者mondilla
相关产品推荐
相关产品推荐

