[R-es] Filtrado de variables

Carlos Ortega
2018-02-22T17:13:55Z

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