【发布时间】:2019-08-16 19:07:05
【问题描述】:
这是我正在处理的数据集中的一个(缩短的)样本。该样本代表来自具有 2 个会话 (session_number) 的实验的数据,在每个会话中,参与者完成了 5 次手握练习试验 (trial_number)(因此,总共 10 个;2 * 5 = 10)。 5 次试验中的每一次都有 3 次握力观察 (percent_of_maximum)。我想获得 10 次试验中每一次的这 3 次观察的平均值(下面,我称之为 mean_by_trial)。
最后,这就是我所坚持的,我想输出一个 20 行长的数据集(每个唯一试验一行,每个参与者有 2 个参与者和 10 个试验;2 * 10 = 20 ),并且保留所有其他变量。对于每个唯一的Participant、trial_number 或 session_number,所有其他变量(在示例中为:placebo、support、personality 和 perceived_difficulty)将是相同的(参见示例数据集如下)。
我已经尝试过使用ddply,这几乎是我想要的,但是新数据集不包含数据集中的其他变量(new_dat 仅包含trial_number、session_number、@ 987654336@ 和新的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 变量。谢谢!
【问题讨论】: