2014-06-06 147 views
5

我有具有由3個字符變量彙總數據幀的所有數值列由組中的R

catvars <- c("DATE", "COUNTRY_FULL_NAME", "TENOR") 

數據幀的其餘部分由20個數字變量的定義的唯一的組的數據幀(它冷凝成3下面的示例)

numvars <- c("X1", "Y1, "Z1") 

我想創建與平均每個數值變量新的數據幀中計算由組

對於單變量,我可以從plyr包ddply使用:

DFsum <- ddply(DF, catvars, summarize, X1mean = mean(X, na.rm=TRUE)) 

但我無法弄清楚如何修改這個ddply命令,包括所有的數值變量。有什麼建議麼?謝謝

回答

6

我認爲您正在尋找numcolwise

ddply(diamonds,.(cut),numcolwise(mean,na.rm = TRUE)) 
     cut  carat depth table price  x  y  z 
1  Fair 1.0461366 64.04168 59.05379 4358.758 6.246894 6.182652 3.982770 
2  Good 0.8491847 62.36588 58.69464 3928.864 5.838785 5.850744 3.639507 
3 Very Good 0.8063814 61.81828 57.95615 3981.760 5.740696 5.770026 3.559801 
4 Premium 0.8919549 61.26467 58.74610 4584.258 5.973887 5.944879 3.647124 
5  Ideal 0.7028370 61.70940 55.95167 3457.542 5.507451 5.520080 3.401448 
+0

非常感謝 - 工作。有沒有一種方法來指定我想包括的數字變量? – ec0n0micus

+0

@ ec0n0micus請參閱'?colwise'和'.cols'參數;但這樣你必須手動指定列或者編寫你自己的函數來測試每個列的包含。 – joran