[R-es] Colapsar una matriz con NA en una única fila

Carlos Ortega cof en qualityexcellence.es
Mar Oct 11 21:25:07 CEST 2016


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})
> df2
              V1       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_df
          V1       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]]



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