[R-es] Filtrado de variables

Carlos Ortega cof en qualityexcellence.es
Jue Feb 22 18:13:55 CET 2018


Ya... de esta forma tampoco obtienes el mes que tiene todos sus valores
NA...que es la duda ..

Otra forma más sencilla con data.table que la que envié anteriormente...

>
> Lines <- "MES|VARIABLE|RESULTADO|
+ 1|A|SI|
+ 1|B|SI|
+ 1|C|NO|
+ 2|A|NA|
+ 2|B|SI|
+ 2|C|SI|
+ 3|A|NO|
+ 3|B|NO|
+ 3|C|NO|
+ 4|A|NA|
+ 4|B|NA|
+ 4|C|NA|"
>
> DF <- read.table(textConnection(Lines), header = TRUE, as.is = TRUE,  sep
= "|")
> DF$X <- NULL
>
> #---------------------
> library(data.table)
> DT <- as.data.table(DF)
> *DT[ ,  all(is.na <http://is.na>(RESULTADO)), by=c("MES")][ V1 == TRUE]*
   MES   V1
1:   4 TRUE

Saludos,
Carlos Ortega
www.qualityexcellence.es

El 22 de febrero de 2018, 17:58, Javier Nieto <mac_javi en hotmail.com>
escribió:

> Hola,
>
>
> un poco más compacto, mi solución es la siguiente:
>
>
> DF[is.na(DF$RESULTADO), ]
>
>
> si se requiere un conteo, con nrow aplicado al resultado anterior.
>
>
>
> donde DF es un data frame con la información.
>
>
> Saludos
> ------------------------------
> *De:* R-help-es <r-help-es-bounces en r-project.org> en nombre de Freddy
> Omar López Quintero <freddy.vate01 en gmail.com>
> *Enviado:* jueves, 22 de febrero de 2018 10:10:04 a. m.
> *Para:* Carlos Ortega
> *CC:* Lista R.
> *Asunto:* Re: [R-es] Filtrado de variables
>
> Es cierto, una vez más entendí todo mal. Mis disculpas.
>
> La solución con SQL no va nada corta, me parece:
>
> # filtrar el mes en el que todos los campos de la columna RESULTADO son NA
>
> sqldf("
> select *
> from DF
> where mes in
> (
>     select a.mes from
>     (
>         select mes, count(*) as total_NA
>         from
>         (select *
>         from DF
>         where resultado=' NA ')
>         group by mes
>     ) a,
>     (
>         select mes, count(*) as total_MES
>         from DF
>         group by mes
>     ) b
>
>     where total_na=total_mes and a.mes=b.mes
>
>     )
> ")
>
> ¡Salud!
>
> 2018-02-22 9:01 GMT-03:00 Carlos Ortega <cof en qualityexcellence.es>:
>
> > Nope..,
> >
> > Sí, puede ser "sqldf" pero de esta forma no te muestra los meses que
> > tienen todos sus meses con "NA"..
> > Tienes que hacer primero un conteo de meses y luego un "left join" con el
> > conteo de "NAs" por mes y quedarte con el mes que tiene los dos valores
> > iguales (número de meses y número de NAs)...
> >
> > Estaba probando la opción, pero no he terminado de completarla...
> >
> > Saludos,
> > Carlos Ortega
> > www.qualityexcellence.es
> >
> > El 22 de febrero de 2018, 12:53, Freddy Omar López Quintero <
> > freddy.vate01 en gmail.com> escribió:
> >
> >> El jue, 22-02-2018 a las 09:52 +0100, Carlos Ortega escribió:
> >>
> >> Aquí tienes un par de formas...
> >>
> >>
> >> ... y aún una más, con el siempre fiel lenguaje SQL:
> >>
> >>
> >> library(sqldf)
> >>
> >> # corriendo antes lo que hizo don Carlos pero dejándolo como un
> data.frame tradicional:
> >>
> >> DF<-as.data.frame(DF)
> >>
> >> sqldf("select * from DF where resultado=' NA '")
> >>
> >>
> >> ¡Saludos!
> >>
> >>
> >> --
> >>
> >> «...homines autem hominum causa esse generatos...»
> >>
> >> Cicero
> >>
> >
> >
> >
> > --
> > Saludos,
> > Carlos Ortega
> > www.qualityexcellence.es
> >
>
>
>
> --
> «...my role is to be on the bottom of things.»
>
> Donald Knuth
>
>         [[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