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]]