有没有一种方法可以改进或更简单?
means.by<-function(data,INDEX){
b<-by(data,INDEX,function(d)apply(d,2,mean))
return(structure(
t(matrix(unlist(b),nrow=length(b[[1]]))),
dimnames=list(names(b),col.names=names(b[[1]]))
))
}
这个想法与SAS MEANS BY语句相同。函数“means.by”获取一个data.frame和一个索引变量,并针对与INDEX的唯一值相对应的每一行行,计算data.frame列上的均值,并返回与该行对应的新数据帧命名INDEX的唯一值。
我敢肯定,在R中一定有更好的方法可以做到这一点,但是我什么也没想到。
最佳答案
聚合函数可以执行您想要的操作吗?
如果没有,请查看plyr软件包,它提供了几种方法来分解内容,进行计算,然后再放回原处。
您也可以使用reshape软件包来执行此操作。
关于r - 按因子计算组的均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3858461/