Estoy tratando de usar el comando by
de R para obtener los medios de columna para subconjuntos de un marco de datos. Por ejemplo, considere esta trama de datos:convirtiendo la salida del comando "by" de R en el marco de datos
> 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
puedo usar comandos de R by
para obtener la columna significa que de acuerdo a la columna de etiquetas:
> 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
Pero ¿cómo obligar a la salida de nuevo a un conjunto de datos ¿marco? as.data.frame
no funciona ...
> 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
¡Estupendo! Todos hacen lo que estaba buscando, aunque 'aggregate' parece más simple (y lo más simple para mí es descubrirlo de nuevo en el futuro). ¡Gracias! – Andrew