像的问题后,我要分配这些都是由lapply和tapply在R.一个简单的例子进行处理的列名:分配的列名行的名称使用lapply
df<-data.frame('X1'=rnorm(100),
'X2'=rnorm(100),
'X3'=c(c(rep('A',50)),c(rep('B',50))))
var<-c('X1','X2')
plyr::ldply(lapply(var, function(v) {
tapply(df[,v],df$X3,mean)
}),rbind)
,这将导致为:
A B
1 -0.06856352 0.08608197
2 -0.23585510 0.01551267
从中我无法判断第1行是来自'X1'还是'X2'。我要的是:
A B
X1 -0.06856352 0.08608197
X2 -0.23585510 0.01551267
虽然我们可以做在这个例子中一个简单的手工检查和一个大胆的猜测,第1行是从“X1”,然而,这会时,有很多更多的变量变得繁琐和危险的,功能比平均值复杂得多。
任何人都知道如何做到这一点?您的时间和知识将深受赞赏。提前致谢。
为什么不'骨料(。〜X3,DF,平均)'或'吨(合计(。〜X3,DF,平均) ,-1])'? – Sotos
或'group_by(df,X3)%>%summarise_each(funs(mean))' – coffeinjunky
感谢Sotos和coffeinjunky,这两个评论让我更接近我想要的解决方案。汇总,group_by,summarise_each函数为我提供了处理这类问题的新工具,我太过沉迷于应用函数。 –