Joan Giménez Verdugo
2019-Mar-12 18:25 UTC
[R-es] Reordenar una matriz con caracteres en cada celda
Hola, tengo una matriz de especies donde cada celda tiene datos con caracteres (son parentesis). Cómo la puedo reordenar considerando tanto filas como columnas? Ejemplo: ,Specie 1, Specie2, Specie3 Specie1, NA, 3(1-4), 8(6-9) Specie2, 5(2-6),NA, 5(4-6) Specie3, 2(1-3), 10(5-15), NA Quiero: ,Specie 2, Specie3, Specie1 Specie2, NA, 5(4-6) , 5(2-6) Specie3, 10(5-15) ,NA, 2(1-3) Specie1, 3(1-4), 8(6-9) , NA Muchas gracias. Joan -- *Joan Giménez, PhD* *Postdoctoral Researcher* Institut de Ciències del Mar (ICM-CSIC) Passeig Maritim 37-49 E-08003 Barcelona (Spain). www.icm.csic.es --- Personal website: http://gimenezverdugo.wixsite.com/joangimenez Research Gate: Joan Giménez <https://www.researchgate.net/profile/Joan_Gimenez2> Phone: +34 619 176 849 ü Please consider the environment before printing this E-mail [[alternative HTML version deleted]]
Javier Marcuzzi
2019-Mar-13 12:10 UTC
[R-es] Reordenar una matriz con caracteres en cada celda
Estimado Joan Especie 1,2,3 tiene un orden, lo que usted desea en la ordenación 2,3,1 no es claro, en otras palabras, posiblemente debe realizarlo a mano, no se me ocurre una función para ese caso en particular. Javier Rubén Marcuzzi El mar., 12 mar. 2019 a las 15:26, Joan Giménez Verdugo (< gimenez.verdugo en gmail.com>) escribió:> Hola, > > tengo una matriz de especies donde cada celda tiene datos con caracteres > (son parentesis). Cómo la puedo reordenar considerando tanto filas como > columnas? > > Ejemplo: > ,Specie 1, Specie2, Specie3 > Specie1, NA, 3(1-4), 8(6-9) > Specie2, 5(2-6),NA, 5(4-6) > Specie3, 2(1-3), 10(5-15), NA > > Quiero: > > ,Specie 2, Specie3, Specie1 > Specie2, NA, 5(4-6) , 5(2-6) > Specie3, 10(5-15) ,NA, 2(1-3) > Specie1, 3(1-4), 8(6-9) , NA > > Muchas gracias. > > Joan > -- > *Joan Giménez, PhD* > *Postdoctoral Researcher* > Institut de Ciències del Mar (ICM-CSIC) > Passeig Maritim 37-49 > E-08003 Barcelona (Spain). > www.icm.csic.es > > --- > Personal website: http://gimenezverdugo.wixsite.com/joangimenez > Research Gate: Joan Giménez > <https://www.researchgate.net/profile/Joan_Gimenez2> > Phone: +34 619 176 849 > ü Please consider the environment before printing this E-mail > > [[alternative HTML version deleted]] > > _______________________________________________ > R-help-es mailing list > R-help-es en r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es >[[alternative HTML version deleted]]
Fernando Arce
2019-Mar-15 03:03 UTC
[R-es] Reordenar una matriz con caracteres en cada celda
Hola Joan: Te vale simplemente con los indices de lsas filas y columnas de la matrix (cambiandolos al orden que desees). Seria hacerlo a mano como dice Javier. Ahora bien, si hay un motivo por el cual eliges un cierto orden, que lo habra, tienes opciones mas sencillas. sobre todo si tienes muchas especies. Pongo el ejemplo en el que reordenaas basandote en un vector de nombres (que puede estar originado en algun tipo de anlisis previo), y otro utilizando un atributo ( pongo el ejemplo de ordenarlas de mayor a menor peso medio) Data <- matrix(c(NA, '3(1-4)', '8(6-9)', '5(2-6)', NA, '5(4-6)', '2(1-3)', '10(5-15)', NA), nrow = 3, byrow = TRUE)colnames(Data) <- paste('specie', c(1,2,3))rownames(Data) <- paste('specie', c(1,2,3))Data> specie 1 specie 2 specie 3> specie 1 NA "3(1-4)" "8(6-9)"> specie 2 "5(2-6)" NA "5(4-6)"> specie 3 "2(1-3)" "10(5-15)" NA## aqui va a mano NData <- Data[c(2,3,1),c(2,3,1)]NData> specie 2 specie 3 specie 1> specie 2 NA "5(4-6)" "5(2-6)"> specie 3 "10(5-15)" NA "2(1-3)"> specie 1 "3(1-4)" "8(6-9)" NA## aqui usando un vector SP <- paste('specie', c(2,3,1))VData <- Data[SP,SP]VData> specie 2 specie 3 specie 1> specie 2 NA "5(4-6)" "5(2-6)"> specie 3 "10(5-15)" NA "2(1-3)"> specie 1 "3(1-4)" "8(6-9)" NAAhora usando un atributo conocido: ## tenemos en algun lado un archivo con el pesopeso <- data.frame(sp = paste('specie', c(1,2,3)), peso = c(31,50, 45))n.ord <- order(peso[,2], decreasing = TRUE) WData <- Data[n.ord,n.ord]WData > specie 2 specie 3 specie 1> specie 2 NA "5(4-6)" "5(2-6)"> specie 3 "10(5-15)" NA "2(1-3)"> specie 1 "3(1-4)" "8(6-9)" NA Saludos Fer En miércoles, 13 de marzo de 2019 23:10:57 GMT+11, Javier Marcuzzi <javier.ruben.marcuzzi en gmail.com> escribió: Estimado Joan Especie 1,2,3 tiene un orden, lo que usted desea en la ordenación 2,3,1 no es claro, en otras palabras, posiblemente debe realizarlo a mano, no se me ocurre una función para ese caso en particular. Javier Rubén Marcuzzi El mar., 12 mar. 2019 a las 15:26, Joan Giménez Verdugo (< gimenez.verdugo en gmail.com>) escribió:> Hola, > > tengo una matriz de especies donde cada celda tiene datos con caracteres > (son parentesis). Cómo la puedo reordenar considerando tanto filas como > columnas? > > Ejemplo: > ,Specie 1, Specie2, Specie3 > Specie1, NA, 3(1-4), 8(6-9) > Specie2, 5(2-6),NA, 5(4-6) > Specie3, 2(1-3), 10(5-15), NA > > Quiero: > > ,Specie 2, Specie3, Specie1 > Specie2, NA, 5(4-6) , 5(2-6) > Specie3, 10(5-15) ,NA, 2(1-3) > Specie1, 3(1-4), 8(6-9) , NA > > Muchas gracias. > > Joan > -- > *Joan Giménez, PhD* > *Postdoctoral Researcher* > Institut de Ciències del Mar (ICM-CSIC) > Passeig Maritim 37-49 > E-08003 Barcelona (Spain). > www.icm.csic.es > > --- > Personal website: http://gimenezverdugo.wixsite.com/joangimenez > Research Gate: Joan Giménez > <https://www.researchgate.net/profile/Joan_Gimenez2> > Phone: +34 619 176 849 > ü Please consider the environment before printing this E-mail > > [[alternative HTML version deleted]] > > _______________________________________________ > R-help-es mailing list > R-help-es en r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es >[[alternative HTML version deleted]] _______________________________________________ R-help-es mailing list R-help-es en r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es [[alternative HTML version deleted]]