El paquete reshape de R (I): melt

El paquete reshape de R consta esencialmene de dos funciones, melt y cast, muy útiles para determinado tipo de transformaciones de de datos.

La función melt se describe sucintamente con el siguiente gráfico:

Es decir, toma un data.frame y lo funde (¡dejaré de ser amigo de quien pronuncie meltea!) o, visto de otra manera, estira.

He aquí unos ejemplos:

library(reshape)
iris.m <- melt(iris)
iris.m

Nótese cómo melt es inteligente y no necesita (en muchas ocasiones) que se le especifiquen cosas evidentes. De hecho, la expresión anterior es equivalente a las siguientes:

iris.m <- melt( iris, id.vars = "Species" )
iris.m <- melt( iris, id.vars = 5 )
iris.m <- melt( iris, id.vars = "Species", measure.vars = 1:4 )
iris.m <- melt( iris, id.vars = 5, measure.vars = 1:4 )

Un ejemplo un poco más sofisticado es el siguiente:

library( plm )
data( Produc )
produc.m <- melt( Produc )
produc.m

Que no produce los efectos deseados. Más bien, queremos

produc.m <- melt(Produc, id = c("state", "year") )
produc.m

El próximo día nos ocuparamos de su función compañera, cast.