Sto tentando di utilizzare il comando R by
per ottenere i mezzi di colonna per i sottoinsiemi di un frame di dati. Ad esempio, si consideri questo frame di dati:conversione dell'output del comando "by" di R nel frame dati
> z = data.frame(labels=c("a","a","b","c","c"),data=matrix(1:20,nrow=5))
> z
labels data.1 data.2 data.3 data.4
1 a 1 6 11 16
2 a 2 7 12 17
3 b 3 8 13 18
4 c 4 9 14 19
5 c 5 10 15 20
posso usare comando di R by
vedere la colonna mezzi secondo la colonna etichette:
> by(z[,2:5],z$labels,colMeans)
z[, 1]: a
data.1 data.2 data.3 data.4
1.5 6.5 11.5 16.5
------------------------------------------------------------
z[, 1]: b
data.1 data.2 data.3 data.4
3 8 13 18
------------------------------------------------------------
z[, 1]: c
data.1 data.2 data.3 data.4
4.5 9.5 14.5 19.5
Ma come faccio costringere l'uscita torna a un data telaio? as.data.frame
non funziona ...
> as.data.frame(by(z[,2:5],z$labels,colMeans))
Error in as.data.frame.default(by(z[, 2:5], z$labels, colMeans)) :
cannot coerce class '"by"' into a data.frame
Ottimo! Tutti fanno ciò che stavo cercando, anche se "aggregare" sembra il più semplice (e il più semplice per me di capire di nuovo in futuro). Grazie! – Andrew