我想基于两个因素来计算z分数,有没有办法做到这一点?

时间:2013-12-30 05:41:58

标签: r tapply

我想基于两个因素来计算总计量表的z分数:性别和年龄组(四个因素)。

我怎样才能在R中这样做?我是R的新手,只是开始学习,我遇到了

tapply(AgingData$StandMen, list(AgingData$AgeGroups, AgingData$Gender_2),
      FUN= "scale")

但结果不是数据框。如何将其转换为数据框?或者还有其他方法吗?

1 个答案:

答案 0 :(得分:0)

如果您提供可重现的示例并显示预期的输出,答案会更好。这就是tapply

的结果
res <- tapply(AgingData$StandMen, list(AgingData$AgeGroups, AgingData$Gender_2),
      FUN= "scale")

是一个尺寸为:

的数组
nelevls(AgingData$AgeGroups) x nlevles(AgingData$Gender_2)

您可以在此处使用

将其转换为data.frame
as.data.frame(res)

但我怀疑你在寻找什么,我猜你想要以长格式得到结果:

使用reshape2包转换结果:

library(reshape2)
melt(res)

或者您使用,不使用tapply,并尝试ddply中的plyr

library(plyr)
ddply(AgingData,.(AgeGroups,Gender_2),transform,scale)