[R-es] aplanar campo multivalor en data frame
Adolfo Álvarez
adalvarez en gmail.com
Mar Nov 18 12:30:19 CET 2014
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","Luis\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]]
Más información sobre la lista de distribución R-help-es