Fernando Macedo
2012-Oct-23 22:24 UTC
[R-es] Separar columnas y colocarlas una encima de la otra
Buenas a todos, ando con este dilema y la verdad no se si es el cansancio pero no logro hallar la solución. Si tengo una tabla o matriz (me es igual) pero lo que quiero es que las columnas que tengo me queden todas en una sola una debajo de la otra. He tratado de hacer un rbind dentro de un loop columna a columna pero no logro el objetivo. De repente es trivial, pero no logro darme cuenta. Saludos y gracias por la atención. Fernando
Jorge I Velez
2012-Oct-23 22:35 UTC
[R-es] Separar columnas y colocarlas una encima de la otra
Hola Fernando, Podrias considerar las dos siguientes opciones: # X es una matrix set.seed(1) X <- matrix(rnorm(100), nrow = 20) head(X) c(X) # X es un data.frame unlist(data.frame(X)) Saludos, Jorge.- 2012/10/24 Fernando Macedo <fermace1@gmail.com>> Buenas a todos, ando con este dilema y la verdad no se si es el cansancio > pero no logro hallar la solución. > > Si tengo una tabla o matriz (me es igual) pero lo que quiero es que las > columnas que tengo me queden todas en una sola una debajo de la otra. He > tratado de hacer un rbind dentro de un loop columna a columna pero no logro > el objetivo. > > De repente es trivial, pero no logro darme cuenta. > > Saludos y gracias por la atención. > > Fernando > > ______________________________**_________________ > R-help-es mailing list > R-help-es@r-project.org > https://stat.ethz.ch/mailman/**listinfo/r-help-es<https://stat.ethz.ch/mailman/listinfo/r-help-es> >[[alternative HTML version deleted]]
Marcuzzi, Javier Rubén
2012-Oct-23 23:09 UTC
[R-es] Separar columnas y colocarlas una encima de la otra
Estimado Fernando No se si entiendo, ¿cuántas columnas tiene?, suponiendo un data.frame, donde la primer columnas es A,B,C, la segunda columna es 1,2,3, ¿usted desea A,B,C,1,2,3?, o necesita acomodar los datos de una forma que permita una análisis más complejo, como puede ser lo anterior más otra columna que es cosa1, cosa1, cosa1, cosa2,cosa2, ...., por su pregunta en mi mente aparece la idea que usted almaceno la información en una hoja de datos y no en una base de datos normalizada, y por ese motivo tiene que acomodar los datos en R. ¿o nada que ver y cometo un error? Javier Marcuzzi -----Mensaje original----- From: Fernando Macedo Sent: Tuesday, October 23, 2012 7:24 PM To: r-help-es Subject: [R-es] Separar columnas y colocarlas una encima de la otra Buenas a todos, ando con este dilema y la verdad no se si es el cansancio pero no logro hallar la solución. Si tengo una tabla o matriz (me es igual) pero lo que quiero es que las columnas que tengo me queden todas en una sola una debajo de la otra. He tratado de hacer un rbind dentro de un loop columna a columna pero no logro el objetivo. De repente es trivial, pero no logro darme cuenta. Saludos y gracias por la atención. Fernando _______________________________________________ R-help-es mailing list R-help-es en r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es
Fernando Macedo
2012-Oct-23 23:35 UTC
[R-es] Separar columnas y colocarlas una encima de la otra
Pido disculpas a la lista por no proporcionar mayores informaciones. En realidad es arreglar los datos que tengo de forma diferente para poder estimar cosas a lo largo del tiempo (curva de crecimiento o curvas de lactación por ejemplo). Supongan lo siguiente: # una matriz o data.frame y=matrix(c(rep("h",10),rep("m",10),rep("m",10),rep("h",10),rep("m",10),rep("h",10),rep("m",10),rep("m",10),rep("h",10)),10,9) x=as.data.frame(matrix(c(rep("h",10),rep("m",10),rep("m",10),rep("h",10),rep("m",10),rep("h",10),rep("m",10),rep("m",10),rep("h",10)),10,9)) donde cada columna corresponde a un misma animal, por lo que los necesito repetidos (las ID serán repetidas tb) pero todo en una sola. O sea que de eso tengo que llegar a esto: obj=c(rep("h",10),rep("m",10),rep("m",10),rep("h",10),rep("m",10),rep("h",10),rep("m",10),rep("m",10),rep("h",10)) c Estuve probando con stack() pero logre en unos conjuntos de datos y en otros no (todavía estoy buscando el porque de los errores). Pero debe ser por ese camino. Saludos y espero haberme explicado un poco mejor. Fernando Macedo El 23/10/12 21:09, Marcuzzi, Javier Rubén escribió:> Estimado Fernando > > No se si entiendo, ¿cuántas columnas tiene?, suponiendo un data.frame, > donde la primer columnas es A,B,C, la segunda columna es 1,2,3, ¿usted > desea A,B,C,1,2,3?, o necesita acomodar los datos de una forma que > permita una análisis más complejo, como puede ser lo anterior más otra > columna que es cosa1, cosa1, cosa1, cosa2,cosa2, ...., por su pregunta > en mi mente aparece la idea que usted almaceno la información en una > hoja de datos y no en una base de datos normalizada, y por ese motivo > tiene que acomodar los datos en R. ¿o nada que ver y cometo un error? > > Javier Marcuzzi > > -----Mensaje original----- From: Fernando Macedo > Sent: Tuesday, October 23, 2012 7:24 PM > To: r-help-es > Subject: [R-es] Separar columnas y colocarlas una encima de la otra > > Buenas a todos, ando con este dilema y la verdad no se si es el > cansancio pero no logro hallar la solución. > > Si tengo una tabla o matriz (me es igual) pero lo que quiero es que las > columnas que tengo me queden todas en una sola una debajo de la otra. He > tratado de hacer un rbind dentro de un loop columna a columna pero no > logro el objetivo. > > De repente es trivial, pero no logro darme cuenta. > > Saludos y gracias por la atención. > > Fernando > > _______________________________________________ > R-help-es mailing list > R-help-es en r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es >
Jorge I Velez
2012-Oct-23 23:40 UTC
[R-es] Separar columnas y colocarlas una encima de la otra
Fernando, La primera alternativa en mi respuesta parece ser lo que buscas. Jorge.- 2012/10/24 Fernando Macedo <fermace1@gmail.com>> Pido disculpas a la lista por no proporcionar mayores informaciones. > En realidad es arreglar los datos que tengo de forma diferente para poder > estimar cosas a lo largo del tiempo (curva de crecimiento o curvas de > lactación por ejemplo). Supongan lo siguiente: > > # una matriz o data.frame > y=matrix(c(rep("h",10),rep("m"**,10),rep("m",10),rep("h",10),** > rep("m",10),rep("h",10),rep("**m",10),rep("m",10),rep("h",10)**),10,9) > x=as.data.frame(matrix(c(rep("**h",10),rep("m",10),rep("m",10)** > ,rep("h",10),rep("m",10),rep("**h",10),rep("m",10),rep("m",10)** > ,rep("h",10)),10,9)) > > donde cada columna corresponde a un misma animal, por lo que los necesito > repetidos (las ID serán repetidas tb) pero todo en una sola. > > O sea que de eso tengo que llegar a esto: > > obj=c(rep("h",10),rep("m",10),**rep("m",10),rep("h",10),rep("** > m",10),rep("h",10),rep("m",10)**,rep("m",10),rep("h",10)) > c > > Estuve probando con stack() pero logre en unos conjuntos de datos y en > otros no (todavía estoy buscando el porque de los errores). Pero debe ser > por ese camino. > > > Saludos y espero haberme explicado un poco mejor. > > Fernando Macedo > > El 23/10/12 21:09, Marcuzzi, Javier Rubén escribió: > > Estimado Fernando >> >> No se si entiendo, ¿cuántas columnas tiene?, suponiendo un data.frame, >> donde la primer columnas es A,B,C, la segunda columna es 1,2,3, ¿usted >> desea A,B,C,1,2,3?, o necesita acomodar los datos de una forma que permita >> una análisis más complejo, como puede ser lo anterior más otra columna que >> es cosa1, cosa1, cosa1, cosa2,cosa2, ...., por su pregunta en mi mente >> aparece la idea que usted almaceno la información en una hoja de datos y no >> en una base de datos normalizada, y por ese motivo tiene que acomodar los >> datos en R. ¿o nada que ver y cometo un error? >> >> Javier Marcuzzi >> >> -----Mensaje original----- From: Fernando Macedo >> Sent: Tuesday, October 23, 2012 7:24 PM >> To: r-help-es >> Subject: [R-es] Separar columnas y colocarlas una encima de la otra >> >> Buenas a todos, ando con este dilema y la verdad no se si es el >> cansancio pero no logro hallar la solución. >> >> Si tengo una tabla o matriz (me es igual) pero lo que quiero es que las >> columnas que tengo me queden todas en una sola una debajo de la otra. He >> tratado de hacer un rbind dentro de un loop columna a columna pero no >> logro el objetivo. >> >> De repente es trivial, pero no logro darme cuenta. >> >> Saludos y gracias por la atención. >> >> Fernando >> >> ______________________________**_________________ >> R-help-es mailing list >> R-help-es@r-project.org >> https://stat.ethz.ch/mailman/**listinfo/r-help-es<https://stat.ethz.ch/mailman/listinfo/r-help-es> >> >> > ______________________________**_________________ > R-help-es mailing list > R-help-es@r-project.org > https://stat.ethz.ch/mailman/**listinfo/r-help-es<https://stat.ethz.ch/mailman/listinfo/r-help-es> >[[alternative HTML version deleted]]
Fernando Macedo
2012-Oct-23 23:47 UTC
[R-es] Separar columnas y colocarlas una encima de la otra
Ahora probé lo que me sugirió Jorge Velez y me sirve bien y muy sencillamente. A veces me complico demasiado en cosas que son sencillas... Muchas gracias a todos!!! Fernando Macedo El 23/10/12 20:35, Jorge I Velez escribió:> Hola Fernando, > > Podrias considerar las dos siguientes opciones: > > # X es una matrix > set.seed(1) > X <- matrix(rnorm(100), nrow = 20) > head(X) > c(X) > > # X es un data.frame > unlist(data.frame(X)) > > Saludos, > Jorge.- > > > 2012/10/24 Fernando Macedo <fermace1@gmail.com > <mailto:fermace1@gmail.com>> > > Buenas a todos, ando con este dilema y la verdad no se si es el > cansancio pero no logro hallar la solución. > > Si tengo una tabla o matriz (me es igual) pero lo que quiero es > que las columnas que tengo me queden todas en una sola una debajo > de la otra. He tratado de hacer un rbind dentro de un loop columna > a columna pero no logro el objetivo. > > De repente es trivial, pero no logro darme cuenta. > > Saludos y gracias por la atención. > > Fernando > > _______________________________________________ > R-help-es mailing list > R-help-es@r-project.org <mailto:R-help-es@r-project.org> > https://stat.ethz.ch/mailman/listinfo/r-help-es > >[[alternative HTML version deleted]]
J Manel S Griño
2012-Oct-24 06:40 UTC
[R-es] Separar columnas y colocarlas una encima de la otra
Buenos días Fernando, Si lo tienes en forma de matrix puedes utilizar melt() del paquete reshape. El objeto que generarás tendrá tres columnas, la primera con la posición en las filas de la matriz original, la segunda con la posición en las columnas de la matriz original, y la tercera con el valor. La tercera columna se llamará value, y si la aislas en un objeto ya tienes lo que necesitas (creo): Recogiendo tu ejemplo de datos: y=matrix(c(rep("h",10),rep("m",10),rep("m",10),rep("h",10),rep("m",10),rep("h",10),rep("m",10),rep("m",10),rep("h",10)),10,9) library(reshape) obj <- melt(y) #para tener toda la información #o bien obj <- melt(y)$value #para quedarte solamente con los valores en un vector Espero que te sirva. Un saludo, Manel Sánchez. Pido disculpas a la lista por no proporcionar mayores informaciones.> En realidad es arreglar los datos que tengo de forma diferente para > poder estimar cosas a lo largo del tiempo (curva de crecimiento o curvas > de lactación por ejemplo). Supongan lo siguiente: > > # una matriz o data.frame > > y=matrix(c(rep("h",10),rep("m",10),rep("m",10),rep("h",10),rep("m",10),rep("h",10),rep("m",10),rep("m",10),rep("h",10)),10,9) > > x=as.data.frame(matrix(c(rep("h",10),rep("m",10),rep("m",10),rep("h",10),rep("m",10),rep("h",10),rep("m",10),rep("m",10),rep("h",10)),10,9)) > > donde cada columna corresponde a un misma animal, por lo que los > necesito repetidos (las ID serán repetidas tb) pero todo en una sola. > > O sea que de eso tengo que llegar a esto: > > > obj=c(rep("h",10),rep("m",10),rep("m",10),rep("h",10),rep("m",10),rep("h",10),rep("m",10),rep("m",10),rep("h",10)) > c > > Estuve probando con stack() pero logre en unos conjuntos de datos y en > otros no (todavía estoy buscando el porque de los errores). Pero debe > ser por ese camino. > > > Saludos y espero haberme explicado un poco mejor. > > Fernando Macedo > >-- Manel. <http://ubuntucounter.geekosophical.net> [[alternative HTML version deleted]]