像的問題後,我要分配這些都是由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函數爲我提供了處理這類問題的新工具,我太過沉迷於應用函數。 –