Puede tener datos en formato ancho o en formato largo. Esto es bastante importante, ya que los métodos utilizables son diferentes, dependiendo del formato. Sé que tiene que trabajar con melt()
y cast()
desde el paquete de remodelación, pero parece que hay algunas cosas que no entiendo.
¿Alguien me puede dar una breve descripción de cómo hacer esto?
data-transformation
r
Semblante
fuente
fuente
melt
ycast
. Allí la conversión de formato ancho a largo se realiza en una etapa. Realmente no hay nada más especial.Respuestas:
Hay varios recursos en el sitio web de Hadley Wickham para el paquete (ahora llamado
reshape2
), incluido un enlace a un documento sobre el paquete en el Journal of Statistical Software.Aquí hay un breve ejemplo del artículo:
Observamos que los datos están en forma amplia. Para ir a la forma larga, hacemos que el
smiths
marco de datos esté fundido :Observe cómo
melt()
eligió una de las variables como id, pero podemos establecer explícitamente cuál usar mediante un argumento'id'
:Aquí hay otro ejemplo de
?cast
:Si almacenamos el marco de datos fundido, podemos convertirlo en otras formas. En la nueva versión de
reshape
(llamadoreshape2
) hay funcionesacast()
ydcast()
devuelve un resultado tipo matriz (matriz, matriz, vector) o un marco de datos respectivamente. Estas funciones también tienen una función de agregación (por ejemplomean()
) para proporcionar resúmenes de datos en forma fundida. Por ejemplo, siguiendo el ejemplo anterior de Calidad del aire, podemos generar, en forma amplia, valores medios mensuales para las variables en el conjunto de datos:En realidad, hay sólo dos funciones principales en
reshape2
:melt()
y elacast()
ydcast()
el emparejamiento. Mire los ejemplos en las páginas de ayuda para estas dos funciones, vea el sitio web de Hadley (enlace arriba) y mire el documento que mencioné. Eso debería ayudarte a comenzar.También puede consultar el
plyr
paquete de Hadley que hace cosas similaresreshape2
pero está diseñado para hacer mucho más.fuente
dcast(aqm, month ~ variable)
, ¿qué haría esto sin la función de agregación??dcast
que le habría dicho esto (vea los detalles para el argumentofun.aggregate
).Quick-R tiene un ejemplo simple de uso del paquete de remodelación
Consulte también
?reshape
( ENLACE ) para ver la forma Base R de moverse entre formato ancho y largo.fuente
No tienes que usar
melt
ycast
.La remodelación de datos se puede hacer de muchas maneras. En su ejemplo particular en su cita, usar
recast
conaggregate
era redundante porqueaggregate
la tarea funciona bien por sí misma.Me gusta cómo, en tu publicación de blog, explicas lo que
melt
está haciendo. Muy pocas personas entienden eso y una vez que lo ve, se vuelve más fácil ver cómocast
funciona y cómo puede escribir sus propias funciones si lo desea.fuente
Ver el wiki reshape2 . Seguramente proporciona más ejemplos como podría esperar.
fuente
Simplemente notando que no hay referencia a los métodos de remodelación más eficientes y extensos
data.table
aquí, así que publico sin más comentarios la excelente respuesta de Zach / Arun en StackOverflow para una pregunta similar:https://stackoverflow.com/questions/6902087/proper-fastest-way-to-reshape-a-data-table/6913151#6913151
Y en particular está la maravillosa viñeta en la
data.table
página de GitHub:https://github.com/Rdatatable/data.table/wiki/Getting-started
fuente