[R-es] aplanar campo multivalor en data frame

JCMld jcmld en carmonarocha.com
Mie Nov 19 10:35:08 CET 2014


Ahora sí, perfecto!!

 

Muchas gracias y saludos

Juan.

 

De: Adolfo Álvarez [mailto:adalvarez en gmail.com] 
Enviado el: miércoles, 19 de noviembre de 2014 10:30
Para: JCMld
CC: r-help-es en r-project.org
Asunto: Re: [R-es] aplanar campo multivalor en data frame

 

Mis disculpas, me he liado al copiar y pegar. Tenia por ahi una lista "a" que no he pegado en el correo. El codigo correcto seria:

 

d<-data.frame(id=c(1,2,3,4),quien=c("Juan","Pedro\nMaria","Alberto","Luis\nElena\nJavier\nPaula"), stringsAsFactors = F)

 

temp <- strsplit(d$quien, "\n")

 

quien <- unlist(temp) #Obtenemos todos los "quienes"

id <- rep(d$id,unlist(lapply(temp,length))) #Y los correspondientes id

 

data.frame(id,quien)

 

  id   quien

1  1    Juan

2  2   Pedro

3  2   Maria

4  3 Alberto

5  4    Luis

6  4   Elena

7  4  Javier

8  4   Paula

 

2014-11-19 10:22 GMT+01:00 JCMld <jcmld en carmonarocha.com>:

Gracias, Adolfo, aunque creo que no funcionaría, ya que el resultado sería

  id   quien
1  1    Juan
2  2   Pedro
3  3   Maria
4  4 Alberto
5  1    Luis
6  2   Elena
7  3  Javier
8  4   Paula

y no el deseado, que está indicado más abajo. Es decir, no asocia los id's
adecuados a cada quien.

En cualquier caso, me sirve la solución que propuso el colega Carlos J. Gil
Bellosta en un correo anterior.

Gracias a todos,
Juan Carmona.


-----Mensaje original-----
De: r-help-es-bounces en r-project.org [mailto:r-help-es-bounces en r-project.org]
En nombre de Adolfo Álvarez
Enviado el: martes, 18 de noviembre de 2014 12:30
Para: r-help-es en r-project.org
Asunto: Re: [R-es] aplanar campo multivalor en data frame


Una solución que se me ocurre sin usar loops es la siguiente:

quien <- unlist(strsplit(d$quien, "\n")) #Obtenemos todos los "quienes"
id <- rep(d$id,unlist(lapply(a,length))) #Y los correspondientes id
data.frame(id,quien)

Saludos!
Adolfo.



> Message: 3
> Date: Mon, 17 Nov 2014 16:36:58 +0100
> From: "JCMld" <jcmld en carmonarocha.com>
> To: <r-help-es en r-project.org>
> Subject: [R-es] aplanar campo multivalor en data frame
> Message-ID: <006001d0027c$54bb84c0$fe328e40$@com>
> Content-Type: text/plain; charset="UTF-8"
>
> Estimados todos,
>
>
>
> Se me plantea el siguiente problema con un data frame: me viene un
> campo de tipo string con m?les l?as y quiero aplanar el data frame, de
> manera que tenga una ? l?a en cada fila, repitiendo el campo
identificador.
> Me explico:
>
>
>
> Tengo, por ejemplo, el siguiente data frame:
>
>
>
>
> d<-data.frame(id=c(1,2,3,4),quien=c("Juan","Pedro\nMaria","Alberto","L
> uis\nE
> lena\nJavier\nPaula"))
>
>
>
> Lo que yo quiero obtener es un nuevo data frame que contenga:
>
>
>
> id            quien
>
> --            -------
>
> 1             Juan
>
> 2             Pedro
>
> 2             Maria
>
> 3             Alberto
>
> 4             Luis
>
> 4             Elena
>
> 4             Javier
>
> 4             Paula
>
>
>
> Para separar los diferentes nombres he probado la funci?trsplit, que
> funciona bien, pero no se me ocurre una manera f?l para obtener el
> nuevo data frame sin recurrir a un bucle que puede resultar lento si
> el data frame es grande.
>
> ?Alguna idea?
>
>
>
> Gracias y saludos,
>
> Juan Carmona.
>
>
>
>
>         [[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
>
>
> Fin de Resumen de R-help-es, Vol 69, Envío 18
> *********************************************
>

        [[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]]



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