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]]
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<http://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<http://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 [[alternative HTML version deleted]]
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]]