Discussion:
[R-es] Transponer data frame.
juan manuel dias
2018-10-11 15:32:38 UTC
Permalink
Hola,
Tengo la siguiente base de datos

Numero de vuelo Nacionalidad Pax
1240 Argentina 2341
1240 Uruguaya 4432
1240 Paraguaya 67000
1240 Brasilera 1234
1241 Argentina 7344
1241 Uruguaya 543000
1241 Paraguaya 3000
1241 Brasilera 234000
y quiero que quede del siguiente modo:

Numero de vuelo Nacionalidad_argentina Nacionalidad_uruguaya
Nacionalidad_paraguaya Nacionalidad_brasilera
1240 2341 4432 67000 1234
1241 7344 543000 3000 234000

intenté con *vuelos_f<-t(vuelos) *pero no logro lo que quiero, queda así:

[image: image.png]

Muchas gracias! Saludos, Juan.
Isidro Hidalgo Arellano
2018-10-11 15:43:02 UTC
Permalink
Buenas tardes:

Lo que necesitas lo puedes hacer con la función “reshape”, del paquete “stats”.

Tienes los datos en la forma “long” y necesitas pasarlos a “wide”.

Un saludo



Isidro Hidalgo Arellano

Observatorio del Mercado de Trabajo

Consejería de Economía, Empresas y Empleo

<http://www.castillalamancha.es/> http://www.castillalamancha.es/







De: R-help-es <r-help-es-***@r-project.org> En nombre de juan manuel dias
Enviado el: jueves, 11 de octubre de 2018 17:33
Para: Lista R <r-help-***@r-project.org>
Asunto: [R-es] Transponer data frame.



Hola,

Tengo la siguiente base de datos




Numero de vuelo

Nacionalidad

Pax


1240

Argentina

2341


1240

Uruguaya

4432


1240

Paraguaya

67000


1240

Brasilera

1234


1241

Argentina

7344


1241

Uruguaya

543000


1241

Paraguaya

3000


1241

Brasilera

234000



y quiero que quede del siguiente modo:




Numero de vuelo

Nacionalidad_argentina

Nacionalidad_uruguaya

Nacionalidad_paraguaya

Nacionalidad_brasilera


1240

2341

4432

67000

1234


1241

7344

543000

3000

234000



intenté con vuelos_f<-t(vuelos) pero no logro lo que quiero, queda así:







Muchas gracias! Saludos, Juan.
juan manuel dias
2018-10-11 17:53:52 UTC
Permalink
Muchas gracias.

El jue., 11 de oct. de 2018 12:43 p.m., Isidro Hidalgo Arellano <
***@jccm.es> escribió:

> Buenas tardes:
>
> Lo que necesitas lo puedes hacer con la función “reshape”, del paquete
> “stats”.
>
> Tienes los datos en la forma “long” y necesitas pasarlos a “wide”.
>
> Un saludo
>
>
>
> Isidro Hidalgo Arellano
>
> Observatorio del Mercado de Trabajo
>
> Consejería de Economía, Empresas y Empleo
>
> http://www.castillalamancha.es/
>
>
>
>
>
>
>
> *De:* R-help-es <r-help-es-***@r-project.org> *En nombre de *juan
> manuel dias
> *Enviado el:* jueves, 11 de octubre de 2018 17:33
> *Para:* Lista R <r-help-***@r-project.org>
> *Asunto:* [R-es] Transponer data frame.
>
>
>
> Hola,
>
> Tengo la siguiente base de datos
>
>
>
> Numero de vuelo
>
> Nacionalidad
>
> Pax
>
> 1240
>
> Argentina
>
> 2341
>
> 1240
>
> Uruguaya
>
> 4432
>
> 1240
>
> Paraguaya
>
> 67000
>
> 1240
>
> Brasilera
>
> 1234
>
> 1241
>
> Argentina
>
> 7344
>
> 1241
>
> Uruguaya
>
> 543000
>
> 1241
>
> Paraguaya
>
> 3000
>
> 1241
>
> Brasilera
>
> 234000
>
>
>
> y quiero que quede del siguiente modo:
>
>
>
> Numero de vuelo
>
> Nacionalidad_argentina
>
> Nacionalidad_uruguaya
>
> Nacionalidad_paraguaya
>
> Nacionalidad_brasilera
>
> 1240
>
> 2341
>
> 4432
>
> 67000
>
> 1234
>
> 1241
>
> 7344
>
> 543000
>
> 3000
>
> 234000
>
>
>
> intenté con *vuelos_f<-t(vuelos) *pero no logro lo que quiero, queda así:
>
>
>
> [image: image.png]
>
>
>
> Muchas gracias! Saludos, Juan.
>
Javier Nieto
2018-10-11 15:46:19 UTC
Permalink
Hola


Desconozco lo que estés haciendo pero en general, no es una buena práctica trabajar de eso modo a menos que sea para visualización en un documento. Lo recomendable es trabajar con la información como la tienes y no la transformes de esa forma. Si aun así decides hacerlo prueba la función dcast del paquete data.table.



Saludos

________________________________
De: R-help-es <r-help-es-***@r-project.org> en nombre de juan manuel dias <***@gmail.com>
Enviado: jueves, 11 de octubre de 2018 10:32:38 a. m.
Para: Lista R
Asunto: [R-es] Transponer data frame.

Hola,
Tengo la siguiente base de datos

Numero de vuelo Nacionalidad Pax
1240 Argentina 2341
1240 Uruguaya 4432
1240 Paraguaya 67000
1240 Brasilera 1234
1241 Argentina 7344
1241 Uruguaya 543000
1241 Paraguaya 3000
1241 Brasilera 234000

y quiero que quede del siguiente modo:

Numero de vuelo Nacionalidad_argentina Nacionalidad_uruguaya Nacionalidad_paraguaya Nacionalidad_brasilera
1240 2341 4432 67000 1234
1241 7344 543000 3000 234000

intenté con vuelos_f<-t(vuelos) pero no logro lo que quiero, queda así:

[image.png]

Muchas gracias! Saludos, Juan.
juan manuel dias
2018-10-11 17:53:44 UTC
Permalink
Muchas gracias.

El jue., 11 de oct. de 2018 12:46 p.m., Javier Nieto <***@hotmail.com>
escribió:

> Hola
>
>
> Desconozco lo que estés haciendo pero en general, no es una buena práctica
> trabajar de eso modo a menos que sea para visualización en un documento. Lo
> recomendable es trabajar con la información como la tienes y no la
> transformes de esa forma. Si aun así decides hacerlo prueba la función
> dcast del paquete data.table.
>
>
>
> Saludos
> ------------------------------
> *De:* R-help-es <r-help-es-***@r-project.org> en nombre de juan
> manuel dias <***@gmail.com>
> *Enviado:* jueves, 11 de octubre de 2018 10:32:38 a. m.
> *Para:* Lista R
> *Asunto:* [R-es] Transponer data frame.
>
> Hola,
> Tengo la siguiente base de datos
>
> Numero de vuelo Nacionalidad Pax
> 1240 Argentina 2341
> 1240 Uruguaya 4432
> 1240 Paraguaya 67000
> 1240 Brasilera 1234
> 1241 Argentina 7344
> 1241 Uruguaya 543000
> 1241 Paraguaya 3000
> 1241 Brasilera 234000
> y quiero que quede del siguiente modo:
>
> Numero de vuelo Nacionalidad_argentina Nacionalidad_uruguaya
> Nacionalidad_paraguaya Nacionalidad_brasilera
> 1240 2341 4432 67000 1234
> 1241 7344 543000 3000 234000
>
> intenté con *vuelos_f<-t(vuelos) *pero no logro lo que quiero, queda así:
>
> [image: image.png]
>
> Muchas gracias! Saludos, Juan.
>
Jesús Para Fernández
2018-10-12 09:28:53 UTC
Permalink
Me parece la mejor opción

Obtener Outlook para Android<https://aka.ms/ghei36>

________________________________
From: R-help-es <r-help-es-***@r-project.org> on behalf of Javier Nieto <***@hotmail.com>
Sent: Thursday, October 11, 2018 5:46:19 PM
To: juan manuel dias; Lista R
Subject: Re: [R-es] Transponer data frame.


Hola


Desconozco lo que estés haciendo pero en general, no es una buena práctica trabajar de eso modo a menos que sea para visualización en un documento. Lo recomendable es trabajar con la información como la tienes y no la transformes de esa forma. Si aun así decides hacerlo prueba la función dcast del paquete data.table.



Saludos

________________________________
De: R-help-es <r-help-es-***@r-project.org> en nombre de juan manuel dias <***@gmail.com>
Enviado: jueves, 11 de octubre de 2018 10:32:38 a. m.
Para: Lista R
Asunto: [R-es] Transponer data frame.

Hola,
Tengo la siguiente base de datos

Numero de vuelo Nacionalidad Pax
1240 Argentina 2341
1240 Uruguaya 4432
1240 Paraguaya 67000
1240 Brasilera 1234
1241 Argentina 7344
1241 Uruguaya 543000
1241 Paraguaya 3000
1241 Brasilera 234000

y quiero que quede del siguiente modo:

Numero de vuelo Nacionalidad_argentina Nacionalidad_uruguaya Nacionalidad_paraguaya Nacionalidad_brasilera
1240 2341 4432 67000 1234
1241 7344 543000 3000 234000

intenté con vuelos_f<-t(vuelos) pero no logro lo que quiero, queda así:

[image.png]

Muchas gracias! Saludos, Juan.
José Trujillo Carmona
2018-10-11 19:02:35 UTC
Permalink
Mediante unstack y reordenando columnas con <- [, ...]

> NV<-c(1240,1240,1240,1240,1241,1241,1241,1241)

>
Nc<-c("Argentina","Uruguaya","Paraguaya","Brasilera","Argentina","Uruguaya","Paraguaya","Brasilera")

> Pax<-c(2341,4432,67000,1234,7344,543000,3000,234000)

> (DDD<-data.frame(NV,Nc,Pax))
    NV        Nc    Pax
1 1240 Argentina   2341
2 1240  Uruguaya   4432
3 1240 Paraguaya  67000
4 1240 Brasilera   1234
5 1241 Argentina   7344
6 1241  Uruguaya 543000
7 1241 Paraguaya   3000
8 1241 Brasilera 234000

> (UUU<-unstack(DDD[,2:3],DDD$Pax~DDD$Nc))
  Argentina Brasilera Paraguaya Uruguaya
1      2341      1234     67000     4432
2      7344    234000      3000   543000

> UUU$NV<-seq(1240,1241)

> (FFF<-UUU[,c(5,seq(1,4)))

> (FFF<-UUU[,c(5,seq(1,4))])
    NV Argentina Brasilera Paraguaya Uruguaya
1 1240      2341      1234     67000     4432
2 1241      7344    234000      3000   543000

Saludos

El 11/10/18 a las 17:32, juan manuel dias escribió:
> Hola,
> Tengo la siguiente base de datos
>
> Numero de vuelo Nacionalidad Pax
> 1240 Argentina 2341
> 1240 Uruguaya 4432
> 1240 Paraguaya 67000
> 1240 Brasilera 1234
> 1241 Argentina 7344
> 1241 Uruguaya 543000
> 1241 Paraguaya 3000
> 1241 Brasilera 234000
>
>
> y quiero que quede del siguiente modo:
>
> Numero de vuelo Nacionalidad_argentina Nacionalidad_uruguaya
> Nacionalidad_paraguaya Nacionalidad_brasilera
> 1240 2341 4432 67000 1234
> 1241 7344 543000 3000 234000
>
>
>  intenté con *vuelos_f<-t(vuelos) *pero no logro lo que quiero, queda así:
>
> image.png
>
> Muchas gracias! Saludos, Juan.
>
> _______________________________________________
> R-help-es mailing list
> R-help-***@r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es
juan manuel dias
2018-10-11 22:40:10 UTC
Permalink
muchas gracias!

El jue., 11 oct. 2018 a las 16:03, José Trujillo Carmona (<***@unex.es>)
escribió:

> Mediante unstack y reordenando columnas con <- [, ...]
>
> > NV<-c(1240,1240,1240,1240,1241,1241,1241,1241)
>
> >
> Nc<-c("Argentina","Uruguaya","Paraguaya","Brasilera","Argentina","Uruguaya","Paraguaya","Brasilera")
>
> > Pax<-c(2341,4432,67000,1234,7344,543000,3000,234000)
>
> > (DDD<-data.frame(NV,Nc,Pax))
> NV Nc Pax
> 1 1240 Argentina 2341
> 2 1240 Uruguaya 4432
> 3 1240 Paraguaya 67000
> 4 1240 Brasilera 1234
> 5 1241 Argentina 7344
> 6 1241 Uruguaya 543000
> 7 1241 Paraguaya 3000
> 8 1241 Brasilera 234000
>
> > (UUU<-unstack(DDD[,2:3],DDD$Pax~DDD$Nc))
> Argentina Brasilera Paraguaya Uruguaya
> 1 2341 1234 67000 4432
> 2 7344 234000 3000 543000
>
> > UUU$NV<-seq(1240,1241)
>
> > (FFF<-UUU[,c(5,seq(1,4)))
>
> > (FFF<-UUU[,c(5,seq(1,4))])
> NV Argentina Brasilera Paraguaya Uruguaya
> 1 1240 2341 1234 67000 4432
> 2 1241 7344 234000 3000 543000
>
> Saludos
> El 11/10/18 a las 17:32, juan manuel dias escribió:
>
> Hola,
> Tengo la siguiente base de datos
>
> Numero de vuelo Nacionalidad Pax
> 1240 Argentina 2341
> 1240 Uruguaya 4432
> 1240 Paraguaya 67000
> 1240 Brasilera 1234
> 1241 Argentina 7344
> 1241 Uruguaya 543000
> 1241 Paraguaya 3000
> 1241 Brasilera 234000
> y quiero que quede del siguiente modo:
>
> Numero de vuelo Nacionalidad_argentina Nacionalidad_uruguaya
> Nacionalidad_paraguaya Nacionalidad_brasilera
> 1240 2341 4432 67000 1234
> 1241 7344 543000 3000 234000
>
> intenté con *vuelos_f<-t(vuelos) *pero no logro lo que quiero, queda así:
>
> [image: image.png]
>
> Muchas gracias! Saludos, Juan.
>
> _______________________________________________
> R-help-es mailing listR-help-***@r-project.orghttps://stat.ethz.ch/mailman/listinfo/r-help-es
>
> _______________________________________________
> R-help-es mailing list
> R-help-***@r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es
>
Carlos Ortega
2018-10-11 19:59:38 UTC
Permalink
Hola,

Esta es otra alternativa:

> Lines <- "
+ Numero_vuelo Nacionalidad Pax
+ 1240 Argentina 2341
+ 1240 Uruguaya 4432
+ 1240 Paraguaya 67000
+ 1240 Brasilera 1234
+ 1241 Argentina 7344
+ 1241 Uruguaya 543000
+ 1241 Paraguaya 3000
+ 1241 Brasilera 23400
+ "
>
> DF <- read.table(textConnection(Lines), header = TRUE, as.is = TRUE)
>
> library(data.table)
> DT <- as.data.table(DF)
> dcast(DT, Numero_vuelo ~ Nacionalidad, value.var =c('Pax') )
Numero_vuelo Argentina Brasilera Paraguaya Uruguaya
1: 1240 2341 1234 67000 4432
2: 1241 7344 23400 3000 543000

Saludos,
Carlos Ortega
www.qualityexcellence.es

El jue., 11 oct. 2018 a las 17:33, juan manuel dias (<***@gmail.com>)
escribió:

> Hola,
> Tengo la siguiente base de datos
>
> Numero de vuelo Nacionalidad Pax
> 1240 Argentina 2341
> 1240 Uruguaya 4432
> 1240 Paraguaya 67000
> 1240 Brasilera 1234
> 1241 Argentina 7344
> 1241 Uruguaya 543000
> 1241 Paraguaya 3000
> 1241 Brasilera 234000
> y quiero que quede del siguiente modo:
>
> Numero de vuelo Nacionalidad_argentina Nacionalidad_uruguaya
> Nacionalidad_paraguaya Nacionalidad_brasilera
> 1240 2341 4432 67000 1234
> 1241 7344 543000 3000 234000
>
> intenté con *vuelos_f<-t(vuelos) *pero no logro lo que quiero, queda así:
>
> [image: image.png]
>
> Muchas gracias! Saludos, Juan.
> _______________________________________________
> R-help-es mailing list
> R-help-***@r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es
>


--
Saludos,
Carlos Ortega
www.qualityexcellence.es
Francisco Javier Ibáñez López
2018-10-16 10:39:41 UTC
Permalink
Buenos días:

Estoy trabajando con el paquete Likert y generando gráficos como el que
adjunto.

El problema que tengo, es que si nos fijamos en la última línea del
gráfico, el percent.low es 67%, el intermedio 14%, y el percent.high es
20%. Eso ofrece un total de 101%. Lógicamente se debe a que los tantos
por cientos están redondeados y no ofrecen un total del 100%.

He mirado la ayuda del paquete y probado con todo lo que se me ocurre,
pero no consigo que se muestren los tantos por cientos al menos con un
decimal, para evitar este error.

¿Alguien sabe decirme como poner la opción en el plot para que tome
decimales?

Gracias por vuestra ayuda.

Saludos,


--
Carlos Ortega
2018-10-16 13:49:25 UTC
Permalink
Hola,

Pues es un pequeño problema que ya existía incluso en el ejemplo que
acompaña al paquete (línea de "Fiction").


[image: image.png]
Y no he visto ningún parámetro en la función que tiene el paquete para el
control de ciertos elementos "likert.options()" para corregir esto.
Una forma de corregirlo es asegurarte tú en tus datos que los valores están
redondeados y que suman todos 100.

Saludos,
Carlos Ortega
www.qualityexcellence.es


El mar., 16 oct. 2018 a las 12:40, Francisco Javier Ibáñez López (<
***@um.es>) escribió:

> Buenos días:
>
> Estoy trabajando con el paquete Likert y generando gráficos como el que
> adjunto.
>
> El problema que tengo, es que si nos fijamos en la última línea del
> gráfico, el percent.low es 67%, el intermedio 14%, y el percent.high es
> 20%. Eso ofrece un total de 101%. Lógicamente se debe a que los tantos por
> cientos están redondeados y no ofrecen un total del 100%.
>
> He mirado la ayuda del paquete y probado con todo lo que se me ocurre,
> pero no consigo que se muestren los tantos por cientos al menos con un
> decimal, para evitar este error.
>
> ¿Alguien sabe decirme como poner la opción en el plot para que tome
> decimales?
>
> Gracias por vuestra ayuda.
>
> Saludos,
>
>
> --
> _______________________________________________
> R-help-es mailing list
> R-help-***@r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es
>


--
Saludos,
Carlos Ortega
www.qualityexcellence.es
Francisco Javier Ibáñez López
2018-10-23 13:24:46 UTC
Permalink
Buenas tardes:

Al final he conseguido "engañar" al gráfico para que los tantos por
cientos salgan ajustados.

Hay que meterse en la lista que genera la función likert, dentro de item
y results, y editar los datos buscando obtener el tanto por ciento correcto.

Si alguien necesita saber exactamente cómo, se puede poner en contacto
conmigo.

Saludos y mil gracias por la ayuda.

Fran Ibáñez

El 16/10/18 a las 15:49, Carlos Ortega escribió:
> Hola,
>
> Pues es un pequeño problema que ya existía incluso en el ejemplo que
> acompaña al paquete (línea de "Fiction").
>
>
> image.png
> Y no he visto ningún parámetro en la función que tiene el paquete para
> el control de ciertos elementos "likert.options()" para corregir esto.
> Una forma de corregirlo es asegurarte tú en tus datos que los valores
> están redondeados y que suman todos 100.
>
> Saludos,
> Carlos Ortega
> www.qualityexcellence.es <http://www.qualityexcellence.es>
>
>
> El mar., 16 oct. 2018 a las 12:40, Francisco Javier Ibáñez López
> (<***@um.es <mailto:***@um.es>>) escribió:
>
> Buenos días:
>
> Estoy trabajando con el paquete Likert y generando gráficos como
> el que adjunto.
>
> El problema que tengo, es que si nos fijamos en la última línea
> del gráfico, el percent.low es 67%, el intermedio 14%, y el
> percent.high es 20%. Eso ofrece un total de 101%. Lógicamente se
> debe a que los tantos por cientos están redondeados y no ofrecen
> un total del 100%.
>
> He mirado la ayuda del paquete y probado con todo lo que se me
> ocurre, pero no consigo que se muestren los tantos por cientos al
> menos con un decimal, para evitar este error.
>
> ¿Alguien sabe decirme como poner la opción en el plot para que
> tome decimales?
>
> Gracias por vuestra ayuda.
>
> Saludos,
>
>
> --
> _______________________________________________
> R-help-es mailing list
> R-help-***@r-project.org <mailto:R-help-***@r-project.org>
> https://stat.ethz.ch/mailman/listinfo/r-help-es
>
>
>
> --
> Saludos,
> Carlos Ortega
> www.qualityexcellence.es <http://www.qualityexcellence.es>
--
Loading...