Ahora sí, perfecto!!
Muchas gracias y saludos Juan. De: Adolfo Álvarez [mailto:[email protected]] Enviado el: miércoles, 19 de noviembre de 2014 10:30 Para: JCMld CC: [email protected] 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 <[email protected]>: 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: [email protected] [mailto:[email protected]] En nombre de Adolfo Álvarez Enviado el: martes, 18 de noviembre de 2014 12:30 Para: [email protected] 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" <[email protected]> > To: <[email protected]> > 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 > [email protected] > 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 [email protected] https://stat.ethz.ch/mailman/listinfo/r-help-es [[alternative HTML version deleted]] _______________________________________________ R-help-es mailing list [email protected] https://stat.ethz.ch/mailman/listinfo/r-help-es
