摘要统计信息是条件中每个唯一变量的变量

时间:2013-12-17 10:02:04

标签: r conditional-statements

我有一个纵向电子表格,其中包含许多个人的不同增长变量。目前我的R代码看起来像这样:

D5<-ifelse(growth$agyr == 5, growth$R.2ND.DIG.AVERAGE,NA)

由于它是纵向的,因此我在多个年龄段对每个人进行相同的测量,因此变量agyr。在这个例子中,它是指所有在5岁时进行手指测量的孩子。

我想做的是为所有年龄段的人做这些,这样我就不必每次都定义一个对象,所以我基本上可以为任何给定的agyr运行一些关于手指长度的摘要统计数据。当然这是可能的,但我仍然是R的初学者。

1 个答案:

答案 0 :(得分:1)

tapply()是你的朋友。例如:

with(growth,
     tapply(R.2ND.DIG.AVERAGE,agyr,mean)
)

另请参阅?tapply以及关于R的一些好的介绍书。还有?with,这个功能可以让您的代码更加可读。

如果您想要平均多个级别,可以给tapply()一系列因子。说gender也是一个变量(一个因素!),你可以这样做:

with(growth,
     tapply(R.2ND.DIG.AVERAGE,list(agyr,gender),mean)
)

tapply()返回类似数组的结构(向量,矩阵或多维数组,具体取决于分类因子的数量)。如果您希望将结果放在数据框中和/或一次汇总多个变量,请查看?aggregate,例如:

thevars <- c("R.2ND.DIG.AVERAGE","VAR2","MOREVAR")
aggregate(growth[thevars],by=list(agyr,gender), FUN="mean")

或使用公式界面:

aggregate(cbind(R.2ND.DIG.AVERAGE,VAR2,MOREVAR) ~ agyr + gender, 
         data=growth, FUN = "mean")

确保您也检查帮助文件。 tapply()aggregate()都非常强大,还有很多其他可能性。