我需要将以下内容应用于包含多个聚合分数的data.set。
数据集:P =参与者,TYPE =试用类型(因子),rt =得分
TYPE P rt
1 A 1 607.500
2 A 2 481.000
3 A 3 298.125
4 A 5 568.250
我需要计算以下标准化分数:NewScore = OldScore - Grandmean(RT列的平均值)+参与者平均值(给定主题的RT列平均值,P)
我一直在尝试使用ddply并提出以下建议;
grandmean<-mean(data$rt)
ddply(data, .(P, TYPE), mutate, mean=mean(rt), grandmean=grandmean, subjectmean=mean(rt[P]), newscore=rt-grandmean-subjectmean)
这里的关键问题是;如何让主题根据当前行主题对数据进行子集化。
ddply在这里是否合适?我试图避免使用循环......
谢谢!
答案 0 :(得分:2)
您没有在TYPE
列上描述拆分,因此我将其留在此处。但是你走在正确的轨道上。我使用transform
而不是mutate
:
data$grandmean <- mean(data$rt)
ddply(data, .(P), transform, newscore = rt - grandmean - mean(rt))
让plyr
对一件事情进行操作通常最简单,而不是试图依靠它在其范围之外寻找全局grandmean
。所以相反,把它变成一个列。