R plyr - 根据每个因子的宏观和主题平均值计算得分

时间:2013-12-12 14:27:46

标签: r normalization aggregate plyr

我需要将以下内容应用于包含多个聚合分数的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在这里是否合适?我试图避免使用循环......

谢谢!

1 个答案:

答案 0 :(得分:2)

您没有在TYPE列上描述拆分,因此我将其留在此处。但是你走在正确的轨道上。我使用transform而不是mutate

data$grandmean <- mean(data$rt)
ddply(data, .(P), transform, newscore = rt - grandmean - mean(rt))

plyr对一件事情进行操作通常最简单,而不是试图依靠它在其范围之外寻找全局grandmean。所以相反,把它变成一个列。