Convertir un marco de datos a una matriz con plyr daply
Estoy tratando de usar ladaply
unción @ en laplyr
package pero no puedo hacer que salga correctamente. Aunque la variable que constituye la matriz es numérica, los elementos de la matriz son listas, no la variable en sí. Aquí hay un pequeño subconjunto de los datos, por ejemplo:
Month Vehicle Samples
1 Oct-10 31057 256
2 Oct-10 31059 316
3 Oct-10 31060 348
4 Nov-10 31057 267
5 Nov-10 31059 293
6 Nov-10 31060 250
7 Dec-10 31057 159
8 Dec-10 31059 268
9 Dec-10 31060 206
Y me gustaría poder visualizar los datos en un formato matricial, que se vería así:
Month
Vehicle Oct-10 Nov-10 Dec-10
31057 256 267 159
31059 316 293 268
31060 348 250 206
Aquí hay un par de sintaxis alternativa que uso (esta última porque mi marco de datos original tiene más columnas de las que muestro aquí):
daply(DF, .(Vehicle, Month), identity)
daply(DF,.(Vehicle,Month), colwise(identity,.(Samples)))
Sin embargo, lo que obtengo es bastante abstruso:
Month
Vehicle Oct-10 Nov-10 Dec-10
31057 List,3 List,3 List,3
31059 List,3 List,3 List,3
31060 List,3 List,3 List,3
Usé elstr
función en la salida como han sugerido algunos comentaristas, y aquí hay un extracto:
List of 9
$ :'data.frame': 1 obs. of 3 variables:
..$ Month : Ord.factor w/ 3 levels "Oct-10"<"Nov-10"<..: 1
..$ Vehicle: Factor w/ 3 levels "31057","31059",..: 1
..$ Samples: int 256
$ :'data.frame': 1 obs. of 3 variables:
..$ Month : Ord.factor w/ 3 levels "Oct-10"<"Nov-10"<..: 1
..$ Vehicle: Factor w/ 3 levels "31057","31059",..: 2
..$ Samples: int 316
¿Qué me estoy perdiendo? Además, ¿hay alguna manera de hacer esto simplemente con los paquetes base? ¡Gracias
Abajo esta elDput
del marco de datos si desea reproducir esto:
structure(list(Month = structure(c(1L, 1L, 1L, 2L, 2L, 2L, 3L,
3L, 3L), .Label = c("Oct-10", "Nov-10", "Dec-10"), class = c("ordered",
"factor")), Vehicle = structure(c(1L, 2L, 3L, 1L, 2L, 3L, 1L,
2L, 3L), .Label = c("31057", "31059", "31060"), class = "factor"),
Samples = c(256L, 316L, 348L, 267L, 293L, 250L, 159L, 268L,
206L)), .Names = c("Month", "Vehicle", "Samples"), class = "data.frame", row.names = c(NA,
9L))