2014-06-06 20 views
5

Ho un frame di dati che ha gruppi univoche definite da 3 variabili carattereriassumere tutte le colonne numerici dei frame di dati, per gruppo, R

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

il resto del frame di dati consiste di 20 variabili numeriche (condensazione a 3 nell'esempio qui sotto)

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

sto cercando di creare un nuovo frame di dati con la media per ogni variabile numerica calcola dal gruppo

per una singola variabile, I può usare ddply dal pacchetto plyr:

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

Ma non riesco a capire come modificare questo comando ddply per includere tutte le variabili numeriche. Eventuali suggerimenti? Grazie

risposta

6

Penso che stiate cercando 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

grazie mille - ha funzionato. c'è un modo per specificare le variabili numeriche che voglio includere? – ec0n0micus

+0

@ ec0n0micus Vedi '? Colwise' e ​​l'argomento' .cols'; ma in questo modo dovrai specificare le colonne manualmente o scrivere la tua funzione per testare ciascuna per l'inclusione. – joran