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","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 > [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
