Javier Muchas gracias por su respuesta Aunque no está funcionando, pues si ejecuto: EncDTE1<- t.EncDTE1[ !is.na(t.EncDTE1$Var1),] obtengo Var1, Var2, Var3,...Varn con datos "texto", NA, NA....NA Pero al ejecutar EncDTE1<- t.EncDTE1[ !is.na(t.EncDTE1$Var2),] obtengo Var1, Var2, Var3,...Varn con datos NA,"texto", NA....NA Estoy tratando de dar la vuelta con el loop otra vez, pero aún no lo consigo... Muchas gracias El 11 de octubre de 2016, 15:27, <javier.ruben.marcuzzi en gmail.com> escribió:> Estimado Oscar Benitez > > > > Yo utilizo algo como lo siguiente: > > > > Datos<- Datos[ !is.na(Datos$DatoX),] #Solo dejo filas en las que las > tratamiento son diferentes de cero > > > > Javier Rubén Marcuzzi > > > > *De: *Oscar Benitez <oscar.benitez1962 en gmail.com> > *Enviado: *martes, 11 de octubre de 2016 15:22 > *Para: *R-help-es <r-help-es en r-project.org> > *Asunto: *[R-es] Colapsar una matriz con NA en una única fila > > > > Hola > > > > Consulto por un problema que no consigo resolver. > > > > Tengo un dataframe con muchas columnas todas de texto. Cada columna tiene > > solamente un valor válido y el resto son NAs. También cada fila tiene un > > único valor válido. Quiero colapsar ese data frame en uno que tenga > > solamente una fila y todas las columnas. Intenté con loops, while, apply y > > otros parecidos pero no lo logro > > > > El ejemplo del data frame sería así: > > V1 V2 V3 > > a33 <NA> 10-04 > > <NA> <NA> <NA> > > <NA> d52725 <NA> > > <NA> <NA> <NA> > > > > Y quiero lograr algo así > > > > V1 V2 V3 > > a33 d52725 10-04 > > > > Mi script es así: > > > > Nombre.1<-colnames(df0) #df0 es el dataframe que obtengo con NA > > > > df<-data.frame(1) #inicio un nuevo data frame con una variable sin nombre y > > valor 1 > > > > > > for (i in Nombre.1) > > {merge(df, subset(paste("df0$",i,sep=''),!is.na(paste("df0$",i,sep='')) > ))} > > #el loop > > > > Cualquier ayuda será apreciada > > > > -- > > Oscar Benitez > > > > [[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 > > >-- Oscar Benitez [[alternative HTML version deleted]]
Hola, Esto te puede valer...> # Crear un df con NAs y solo un elemento por columna no NA > df <- as.data.frame(matrix(data = NA, nrow = 10, ncol = 5 )) > set.seed(1) > df2 <- apply(df, 2, function(x) { x[sample(1:10,1)] <- rnorm(1); x}) > df2V1 V2 V3 V4 V5 [1,] NA NA NA NA NA [2,] NA NA NA -1.53995 NA [3,] NA NA NA NA NA [4,] NA NA NA NA NA [5,] NA NA NA NA NA [6,] -0.6264538 NA NA NA NA [7,] NA NA 1.595281 NA NA [8,] NA NA NA NA 0.4874291 [9,] NA 1.329799 NA NA NA [10,] NA NA NA NA NA> > # Encuentra en cada col las filas con NAs > idx <- apply(df2,2, function(x) { which(!is.na(x)) } ) > # Extrae de cada col del df con NA el elemento no NA > idx_df <- data.frame() > for(i in 1:ncol(df2)) {+ idx_df[1,i] <- df2[idx[i], i] + }> idx_dfV1 V2 V3 V4 V5 1 -0.6264538 1.329799 1.595281 -1.53995 0.4874291>Saludos, Carlos Ortega www.qualityexcellence.es El 11 de octubre de 2016, 20:53, Oscar Benitez <oscar.benitez1962 en gmail.com> escribió:> Javier > Muchas gracias por su respuesta > Aunque no está funcionando, pues si ejecuto: > > EncDTE1<- t.EncDTE1[ !is.na(t.EncDTE1$Var1),] obtengo Var1, Var2, > Var3,...Varn con datos "texto", NA, NA....NA > > Pero al ejecutar > > EncDTE1<- t.EncDTE1[ !is.na(t.EncDTE1$Var2),] obtengo Var1, Var2, > Var3,...Varn con datos NA,"texto", NA....NA > > > Estoy tratando de dar la vuelta con el loop otra vez, pero aún no lo > consigo... > Muchas gracias > > > > > El 11 de octubre de 2016, 15:27, <javier.ruben.marcuzzi en gmail.com> > escribió: > > > Estimado Oscar Benitez > > > > > > > > Yo utilizo algo como lo siguiente: > > > > > > > > Datos<- Datos[ !is.na(Datos$DatoX),] #Solo dejo filas en las que las > > tratamiento son diferentes de cero > > > > > > > > Javier Rubén Marcuzzi > > > > > > > > *De: *Oscar Benitez <oscar.benitez1962 en gmail.com> > > *Enviado: *martes, 11 de octubre de 2016 15:22 > > *Para: *R-help-es <r-help-es en r-project.org> > > *Asunto: *[R-es] Colapsar una matriz con NA en una única fila > > > > > > > > Hola > > > > > > > > Consulto por un problema que no consigo resolver. > > > > > > > > Tengo un dataframe con muchas columnas todas de texto. Cada columna tiene > > > > solamente un valor válido y el resto son NAs. También cada fila tiene un > > > > único valor válido. Quiero colapsar ese data frame en uno que tenga > > > > solamente una fila y todas las columnas. Intenté con loops, while, > apply y > > > > otros parecidos pero no lo logro > > > > > > > > El ejemplo del data frame sería así: > > > > V1 V2 V3 > > > > a33 <NA> 10-04 > > > > <NA> <NA> <NA> > > > > <NA> d52725 <NA> > > > > <NA> <NA> <NA> > > > > > > > > Y quiero lograr algo así > > > > > > > > V1 V2 V3 > > > > a33 d52725 10-04 > > > > > > > > Mi script es así: > > > > > > > > Nombre.1<-colnames(df0) #df0 es el dataframe que obtengo con NA > > > > > > > > df<-data.frame(1) #inicio un nuevo data frame con una variable sin > nombre y > > > > valor 1 > > > > > > > > > > > > for (i in Nombre.1) > > > > {merge(df, subset(paste("df0$",i,sep=''),!is.na > (paste("df0$",i,sep='')) > > ))} > > > > #el loop > > > > > > > > Cualquier ayuda será apreciada > > > > > > > > -- > > > > Oscar Benitez > > > > > > > > [[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 > > > > > > > > > > -- > Oscar Benitez > > [[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 >-- Saludos, Carlos Ortega www.qualityexcellence.es [[alternative HTML version deleted]]
javier.ruben.marcuzzi en gmail.com
2016-Oct-11 22:29 UTC
[R-es] Colapsar una matriz con NA en una única fila
Estimado Oscar Benitez Tendría que probarlo, pero el código que yo le envié no está para copiar y pegar, lo que esta entre [] filtra una Var, no las tres, para las tres al mismo tiempo debe completar el código entre [ ?] Algo tipo: lista <- lista[!is.na(lista$Var1) & !is.na(lista$Var2),] Javier Rubén Marcuzzi De: Oscar Benitez Enviado: martes, 11 de octubre de 2016 15:53 Para: Javier Marcuzzi CC: R-help-es Asunto: Re: [R-es] Colapsar una matriz con NA en una única fila Javier Muchas gracias por su respuesta Aunque no está funcionando, pues si ejecuto: EncDTE1<- t.EncDTE1[ !is.na(t.EncDTE1$Var1),] obtengo Var1, Var2, Var3,...Varn con datos "texto", NA, NA....NA Pero al ejecutar EncDTE1<- t.EncDTE1[ !is.na(t.EncDTE1$Var2),] obtengo Var1, Var2, Var3,...Varn con datos NA,"texto", NA....NA Estoy tratando de dar la vuelta con el loop otra vez, pero aún no lo consigo... Muchas gracias El 11 de octubre de 2016, 15:27, <javier.ruben.marcuzzi en gmail.com> escribió: Estimado Oscar Benitez Yo utilizo algo como lo siguiente: Datos<- Datos[ !is.na(Datos$DatoX),] #Solo dejo filas en las que las tratamiento son diferentes de cero Javier Rubén Marcuzzi De: Oscar Benitez Enviado: martes, 11 de octubre de 2016 15:22 Para: R-help-es Asunto: [R-es] Colapsar una matriz con NA en una única fila Hola Consulto por un problema que no consigo resolver. Tengo un dataframe con muchas columnas todas de texto. Cada columna tiene solamente un valor válido y el resto son NAs. También cada fila tiene un único valor válido. Quiero colapsar ese data frame en uno que tenga solamente una fila y todas las columnas. Intenté con loops, while, apply y otros parecidos pero no lo logro El ejemplo del data frame sería así: V1 V2 V3 a33 <NA> 10-04 <NA> <NA> <NA> <NA> d52725 <NA> <NA> <NA> <NA> Y quiero lograr algo así V1 V2 V3 a33 d52725 10-04 Mi script es así: Nombre.1<-colnames(df0) #df0 es el dataframe que obtengo con NA df<-data.frame(1) #inicio un nuevo data frame con una variable sin nombre y valor 1 for (i in Nombre.1) {merge(df, subset(paste("df0$",i,sep=''),!is.na(paste("df0$",i,sep=''))))} #el loop Cualquier ayuda será apreciada -- Oscar Benitez [[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 -- Oscar Benitez [[alternative HTML version deleted]]
javier.ruben.marcuzzi en gmail.com
2016-Oct-11 22:59 UTC
[R-es] Colapsar una matriz con NA en una única fila
Estimado Oscar Benitez Use la solución de Carlos Ortega, mi solución busca cuándo no tienen NA, pero si están en distinta fila a usted le sirve y yo lo descarto. Javier Rubén Marcuzzi De: javier.ruben.marcuzzi en gmail.com Enviado: martes, 11 de octubre de 2016 19:29 Para: Oscar Benitez CC: R-help-es Asunto: RE: [R-es] Colapsar una matriz con NA en una única fila Estimado Oscar Benitez Tendría que probarlo, pero el código que yo le envié no está para copiar y pegar, lo que esta entre [] filtra una Var, no las tres, para las tres al mismo tiempo debe completar el código entre [ ?] Algo tipo: lista <- lista[!is.na(lista$Var1) & !is.na(lista$Var2),] Javier Rubén Marcuzzi De: Oscar Benitez Enviado: martes, 11 de octubre de 2016 15:53 Para: Javier Marcuzzi CC: R-help-es Asunto: Re: [R-es] Colapsar una matriz con NA en una única fila Javier Muchas gracias por su respuesta Aunque no está funcionando, pues si ejecuto: EncDTE1<- t.EncDTE1[ !is.na(t.EncDTE1$Var1),] obtengo Var1, Var2, Var3,...Varn con datos "texto", NA, NA....NA Pero al ejecutar EncDTE1<- t.EncDTE1[ !is.na(t.EncDTE1$Var2),] obtengo Var1, Var2, Var3,...Varn con datos NA,"texto", NA....NA Estoy tratando de dar la vuelta con el loop otra vez, pero aún no lo consigo... Muchas gracias El 11 de octubre de 2016, 15:27, <javier.ruben.marcuzzi en gmail.com> escribió: Estimado Oscar Benitez Yo utilizo algo como lo siguiente: Datos<- Datos[ !is.na(Datos$DatoX),] #Solo dejo filas en las que las tratamiento son diferentes de cero Javier Rubén Marcuzzi De: Oscar Benitez Enviado: martes, 11 de octubre de 2016 15:22 Para: R-help-es Asunto: [R-es] Colapsar una matriz con NA en una única fila Hola Consulto por un problema que no consigo resolver. Tengo un dataframe con muchas columnas todas de texto. Cada columna tiene solamente un valor válido y el resto son NAs. También cada fila tiene un único valor válido. Quiero colapsar ese data frame en uno que tenga solamente una fila y todas las columnas. Intenté con loops, while, apply y otros parecidos pero no lo logro El ejemplo del data frame sería así: V1 V2 V3 a33 <NA> 10-04 <NA> <NA> <NA> <NA> d52725 <NA> <NA> <NA> <NA> Y quiero lograr algo así V1 V2 V3 a33 d52725 10-04 Mi script es así: Nombre.1<-colnames(df0) #df0 es el dataframe que obtengo con NA df<-data.frame(1) #inicio un nuevo data frame con una variable sin nombre y valor 1 for (i in Nombre.1) {merge(df, subset(paste("df0$",i,sep=''),!is.na(paste("df0$",i,sep=''))))} #el loop Cualquier ayuda será apreciada -- Oscar Benitez [[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 -- Oscar Benitez [[alternative HTML version deleted]]