这是我正在处理的数据集的(缩短版)样本。该样本代表了一个有2个会话(
最后,这正是我卡住的地方,我想输出一个长度为20行的数据集(每个独特试验一个行, 每个参与者有10个试验; 2*10 = 20),并保留所有其他变量。所有其他变量(在示例中有:
我尝试使用
session_number
)实验的数据,每个参与者在每个会话中完成5次握力锻炼试验(因此总共进行10次试验;2*5 = 10)。每个试验都有3个握力强度观测值(percent_of_maximum
)。我想要获得这些3个观测值的平均值(下面称之为mean_by_trial
),用于每个10个试验中的每个试验。最后,这正是我卡住的地方,我想输出一个长度为20行的数据集(每个独特试验一个行, 每个参与者有10个试验; 2*10 = 20),并保留所有其他变量。所有其他变量(在示例中有:
placebo
,support
,personality
和perceived_difficulty
)对于每个独特的Participant
,trial_number
或session_number
都将是相同的(请参阅以下示例数据集)。我尝试使用
ddply
来完成这个任务,基本上就是我想要的,但新数据集不包含数据集中的其他变量(new_dat
只包含trial_number
,session_number
,Participant
和新的mean_by_trial
变量)。如何保留其他变量?#create sample data frame
dat <- data.frame(
Participant = rep(1:2, each = 30),
placebo = c(replicate(15, "placebo"), replicate(15, "control"), replicate(15, "control"), replicate(15, "placebo")),
support = rep(sort(rep(c("support", "control"), 3)), 10),
personality = c(replicate(30, "nice"), replicate(30, "naughty")),
session_number = c(rep(1:2, each = 15), rep(1:2, each = 15)),
trial_number = c(rep(1:5, each = 3), rep(1:5, each = 3), rep(1:5, each = 3), rep(1:5, each = 3)),
percent_of_maximum = runif(60, min = 0, max = 100),
perceived_difficulty = runif(60, min = 50, max = 100)
)
#this is what I have tried so far
library(plyr)
new_dat <- ddply(dat, .(trial_number, session_number, Participant), summarise, mean_by_trial = mean(percent_of_maximum), .drop = FALSE)
我希望new_dat
包含 dat
中的所有变量,加上 mean_by_trial
变量。谢谢!