[R-es] como pasar de data.frame -> cast -> data.frame

eric ericconchamunoz en gmail.com
Jue Oct 30 17:12:25 CET 2014


Estimados Carlos y Victor, muchas gracias por sus sugerencias. No
conocia data.table y es realmente un fantastico y poderoso paquete. Pude
hacer todo lo que necesitaba y que hacia con "cast" y ademas me entrega
la salida en un formato adecuado para graficarlo inmediatamente.

Aun no entiendo bien, eso si, porque es tan rapido comparado con el
trabajo con vectores :)

Muchas gracias comunidad,

Saludos, Eric.







On 29/10/14 04:24, Víctor Granda García wrote:
> ​Hola a todos.
> 
> Si no me equivoco, lo que haces con cast lo puedes hacer con el paquete
> dplyr (http://cran.r-project.org/web/packages/dplyr/index.html), cuya
> salida es ya un data.frame (o data.table según lo que quieras) y por
> tanto graficarlo sería más sencillo. Además el autor del paquete es el
> mismo que ggplot2 (Hadley Wickham).
> 
> En la viñeta del paquete
> (http://cran.rstudio.com/web/packages/dplyr/vignettes/introduction.html)
> explica muy bien como hacerlo.
> Espero que te sirva.
> 
> 
> Un saludo.​
> 
> Víctor Granda García
> Ph.D. Student
> Dpto. BOS, Universidad de Oviedo
> 
> El 28 de octubre de 2014, 23:22, eric <ericconchamunoz en gmail.com
> <mailto:ericconchamunoz en gmail.com>> escribió:
> 
>     Gracias Olivier por tu sugerencia ... uso "cast" porque me permite hacer
>     facilmente  algunas operaciones con los datos antes de graficarlos, por
>     ejemplo, calcular el promedio de los datos que cumplan un conjunto de
>     condiciones. Por ejemplo, graficar el promedio de la variable "are" que
>     cumplan:
> 
>     sol=="dol" , dia==1, con==5
> 
>     y asi ... tambien lo hacia de otra forma q es mucho mas complicada,
>     generando un archivo con las condiciones que quiero que se cumplan y
>     filtrando el archivo de datos de acuerdo a esas condiciones y aplicar
>     las operaciones que necesito a los datos que quedan. Pero crear ese
>     archivo-filtro no es tan trivial, por eso que estaba contento con
>     "cast", pero ahora tengo el problema de que para graficar necesito
>     transformar la tabla que me entrega "cast" en un data.frame adecuado.
>     Seguro debe haber otras formas y por eso preguntaba si no existia ya una
>     funcion que me permitiera crear el df.
> 
>     Voy a seguir mirando en CRAN a ver que encuentro.
> 
>     Saludos,
> 
>     Eric.
> 
> 
> 
> 
> 
> 
> 
> 
>     On 28/10/14 05:27, Olivier Nuñez wrote:
>     > No creo que haga falta utilizar cast.
>     > Prueba lo siguiente:
>     >
>     > require(ggplot2)
>     > ggplot(subset(dataEnd.dia %in% 1:5), aes(con)) + geom_bar() +
>     facet_wrap(~sol)
>     >
>     > Un saludo. Olivier
>     >
>     >
>     >
>     > ----- Mensaje original -----
>     > De: "eric" <ericconchamunoz en gmail.com
>     <mailto:ericconchamunoz en gmail.com>>
>     > Para: "Carlos Ortega" <cof en qualityexcellence.es
>     <mailto:cof en qualityexcellence.es>>
>     > CC: "Lista R" <r-help-es en r-project.org
>     <mailto:r-help-es en r-project.org>>
>     > Enviados: Lunes, 27 de Octubre 2014 23:30:16
>     > Asunto: Re: [R-es] como pasar de data.frame -> cast -> data.frame
>     >
>     > Hola Carlos, quiero graficar el valor de cada celda, por ejemplo,
>     10 (en
>     > 1,1) clasificado de acuerdo a las etiquetas de encabezado de fila
>     y columna.
>     >
>     > Me explico:
>     >
>     > Necesito un panel para cada etiqueta del titulo de la fila (con,
>     dec ...
>     > ) y en el eje X de cada panel va la concentracion, que son los numeros
>     > del 0 al 5 en el encabezado de cada columna. El eje Y de cada panel es
>     > un porcentaje. Es el valor de cada celda en la tabla y que se calculo
>     > con la funcion "cast". Dentro de cada panel los puntos se deben
>     agrupar
>     > por dia, dato que tambien esta en el encabezado de cada columna.
>     >
>     > Por esto es que pienso que podria existir una forma de utilizar la
>     > informacion que se obtiene con "cast" para hacer un grafico del tipo
>     > descrito, de una forma mas inteligente que reordenando la tabla en un
>     > data.frame manualmente.
>     >
>     > Eso es.
>     >
>     > Espero haberme explicado adecuadamente.
>     >
>     > saludos y gracias,
>     >
>     > Eric.
>     >
>     >
>     >
>     >
>     > On 27/10/14 17:00, Carlos Ortega wrote:
>     >> Hola,
>     >>
>     >> ¿Pero qué quieres graficar?....
>     >> Creo que me haría una mejor idea si me dices qué quieres pintar
>     sobre el
>     >> conjunto original...
>     >>
>     >> Gracias,
>     >> Carlos Ortega
>     >> www.qualityexcellence.es <http://www.qualityexcellence.es>
>     <http://www.qualityexcellence.es>
>     >>
>     >> El 27 de octubre de 2014, 20:54, eric <ericconchamunoz en gmail.com
>     <mailto:ericconchamunoz en gmail.com>
>     >> <mailto:ericconchamunoz en gmail.com
>     <mailto:ericconchamunoz en gmail.com>>> escribió:
>     >>
>     >>     Fabulosa comunidad, tengo el siguiente problema:
>     >>
>     >>     1. Tengo un data.frame no muy grande, de 575 filas x 8
>     columnas. En este
>     >>     df, las primeras 7 columnas identifican el dato que va en la
>     columna 8.
>     >>     A las primeras 7 col se las podria considerar como datos
>     categoricos y
>     >>     la columna 8 es un dato numerico. El df luce algo asi:
>     >>
>     >>       sol con dia rep nca nin iso          are
>     >>     1 con   0   1   1  16   0   s 0.3866520976
>     >>     2 con   0   1   1  16   1   c 0.0008842527
>     >>     3 con   0   1   1  18   0   s 0.2409465396
>     >>     4 con   0   1   1  18   1   c 0.0021092822
>     >>     5 con   0   2   1  16   0   s 0.6005446999
>     >>     6 con   0   2   1  18   0   s 0.3394979487
>     >>
>     >>
>     >>
>     >>     2. A partir del df y usando la funcion "cast" obtengo unas
>     tablas como
>     >>     las que siguen:
>     >>
>     >>     cast(datEnd[datEnd$dia%in%c(1,5),], sol ~ dia + con,
>     >>     fun.aggregate=length)
>     >>
>     >>                   sol 1_0 1_1 1_2 1_3 1_4 1_5 5_0 5_1 5_2 5_3 5_4 5_5
>     >>                 1 con  10   0   0   0   0   0  11   0   0   0   0   0
>     >>                 2 dec   0   6   6   6   8   6   0   9  11  13  14  17
>     >>                 3 dol   0   8   6  10   9  10   0  17  16  17  19  19
>     >>                 4 lim   0  10   6   7   6  16   0  11   9  13  10   9
>     >>
>     >>     en la primera fila de la tabla, que son encabezados de la
>     columna, el
>     >>     primer numero indica un dia (1 y 5) y el segundo numero
>     indica una
>     >>     concentracion, desde 0 a 5). Los nombres en la primera
>     columna (con,
>     >>     dec...) son identificadores tambien.
>     >>
>     >>     3. ahora viene mi problema: de esas tablas obtenidas con
>     "cast" tengo
>     >>     bastantes y necesito graficar los datos que ahi aparecen.
>     Creo que no
>     >>     podria utilizar directamente esa tabla para obtener un
>     grafico en R (o
>     >>     si ? no lo se) ... entonces mi pregunta es
>     >>
>     >>     Existe alguna funcion, algo asi como "stack" y "unstack" para
>     >>     transformar esa tabla de doble (o triple) entrada que me
>     entrega "cast"
>     >>     en un data.frame que me permita graficar a partir de el ?
>     >>
>     >>     habia comenzado a hacerlo a mano, pero por la cantidad de
>     tablas que
>     >>     tengo es impracticable.
>     >>
>     >>     Espero haber explicado correctamente mi problema. Toda
>     sugerencia sera
>     >>     muy apreciada
>     >>
>     >>     Slds cordiales,
>     >>
>     >>     Eric Concha M.
>     >>
>     >>
>     >>     pd. adjunto los datos x si quieren jugar con ellos
>     >>
>     >>
>     >>
>     >>     --
>     >>     Forest Engineer
>     >>     Master in Environmental and Natural Resource Economics
>     >>     Ph.D. student in Sciences of Natural Resources at La Frontera
>     University
>     >>     Member in AguaDeTemu2030, citizen movement for Temuco with
>     green city
>     >>     standards for living
>     >>
>     >>     Nota: Las tildes se han omitido para asegurar compatibilidad
>     con algunos
>     >>     lectores de correo.
>     >>
>     >>     _______________________________________________
>     >>     R-help-es mailing list
>     >>     R-help-es en r-project.org <mailto:R-help-es en r-project.org>
>     <mailto:R-help-es en r-project.org <mailto:R-help-es en r-project.org>>
>     >>     https://stat.ethz.ch/mailman/listinfo/r-help-es
>     >>
>     >>
>     >>
>     >>
>     >> --
>     >> Saludos,
>     >> Carlos Ortega
>     >> www.qualityexcellence.es <http://www.qualityexcellence.es>
>     <http://www.qualityexcellence.es>
>     >
> 
>     --
>     Forest Engineer
>     Master in Environmental and Natural Resource Economics
>     Ph.D. student in Sciences of Natural Resources at La Frontera University
>     Member in AguaDeTemu2030, citizen movement for Temuco with green city
>     standards for living
> 
>     Nota: Las tildes se han omitido para asegurar compatibilidad con algunos
>     lectores de correo.
> 
>     _______________________________________________
>     R-help-es mailing list
>     R-help-es en r-project.org <mailto:R-help-es en r-project.org>
>     https://stat.ethz.ch/mailman/listinfo/r-help-es
> 
> 

-- 
Forest Engineer
Master in Environmental and Natural Resource Economics
Ph.D. student in Sciences of Natural Resources at La Frontera University
Member in AguaDeTemu2030, citizen movement for Temuco with green city
standards for living

Nota: Las tildes se han omitido para asegurar compatibilidad con algunos
lectores de correo.



Más información sobre la lista de distribución R-help-es