Hola, ¿qué tal? ¿Y por qué no, simplemente, sapply(mi.data.table, function(x) sum(is.na(x)))? Un saludo, Carlos J. Gil Bellosta http://www.datanalytics.com El día 19 de junio de 2015, 14:44, Olivier Nuñez <onunez en unex.es> escribió:> Si te devuelve 0 para todas las columnas es que no hay NA's. > Tal vez son caracteres igual a "NA". > Para asegurarte de ello, prueba > > DT[,lapply(.SD,function(x) sum(x=="NA",na.rm=TRUE))] > > > > ----- Mensaje original ----- > > De: "MªLuz Morales" <mlzmrls en gmail.com> > Para: "Olivier Nuñez" <onunez en unex.es> > CC: "r-help-es" <r-help-es en r-project.org> > Enviados: Viernes, 19 de Junio 2015 14:17:46 > Asunto: Re: [R-es] Sobre data.table > > Uy pues con mi data.table no lo hace bien, me devuelve 0 para todas las columnas. Podría ser porque algunas columnas son char y otras num?? > > El 19 de junio de 2015, 13:03, Olivier Nuñez < onunez en unex.es > escribió: > > > > Si quieres mantener el formato data.table en la salida, mejor utilizar lapply: > > >> DT[,lapply(.SD,function(x) sum( is.na (x)))] > X1 X2 > 1: 2 3 > > > > De: "MªLuz Morales" < mlzmrls en gmail.com > > Para: "Olivier Nuñez" < onunez en unex.es > > Enviados: Viernes, 19 de Junio 2015 12:40:09 > Asunto: Re: [R-es] Sobre data.table > > Muchas gracias!! > > El 19 de junio de 2015, 12:29, Olivier Nuñez < onunez en unex.es > escribió: > > <blockquote> >> DT=data.table(X1=c(NA,NA,1,1,1),X2=c(1,1,NA,NA,NA)) >> DT[,apply(.SD,2,function(x) sum( is.na (x)))] > X1 X2 > 2 3 > > Un saludo. Olivier > > ----- Mensaje original ----- > De: "MªLuz Morales" < mlzmrls en gmail.com > > Para: "r-help-es" < r-help-es en r-project.org > > Enviados: Viernes, 19 de Junio 2015 12:08:42 > Asunto: [R-es] Sobre data.table > > Hola, > > quisiera determinar el número de filas distintas del valor NA para cada una > de las columnas de un data.table. Probablemente se puede hacer de una forma > muy compacta, pero no consigo hacerlo. > > Gracias > Un saludo > > MªLuz > > [[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 > > > > > > > </blockquote> > > > > > [[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
Tan sólo para sacarle partido al paquete:> DTX1 X2 Grupo 1: NA 1 A 2: NA 1 A 3: 1 NA A 4: 1 NA B 5: 1 NA B> DT[,lapply(.SD,function(x) sum(is.na(x))),by=Grupo]Grupo X1 X2 1: A 2 1 2: B 0 2 Un saludo. Olivier ----- Mensaje original ----- De: "Carlos J. Gil Bellosta" <cgb en datanalytics.com> Para: "r-help-es" <r-help-es en r-project.org> Enviados: Viernes, 19 de Junio 2015 15:06:15 Asunto: Re: [R-es] Sobre data.table Hola, ¿qué tal? ¿Y por qué no, simplemente, sapply(mi.data.table, function(x) sum(is.na(x)))? Un saludo, Carlos J. Gil Bellosta http://www.datanalytics.com El día 19 de junio de 2015, 14:44, Olivier Nuñez <onunez en unex.es> escribió:> Si te devuelve 0 para todas las columnas es que no hay NA's. > Tal vez son caracteres igual a "NA". > Para asegurarte de ello, prueba > > DT[,lapply(.SD,function(x) sum(x=="NA",na.rm=TRUE))] > > > > ----- Mensaje original ----- > > De: "MªLuz Morales" <mlzmrls en gmail.com> > Para: "Olivier Nuñez" <onunez en unex.es> > CC: "r-help-es" <r-help-es en r-project.org> > Enviados: Viernes, 19 de Junio 2015 14:17:46 > Asunto: Re: [R-es] Sobre data.table > > Uy pues con mi data.table no lo hace bien, me devuelve 0 para todas las columnas. Podría ser porque algunas columnas son char y otras num?? > > El 19 de junio de 2015, 13:03, Olivier Nuñez < onunez en unex.es > escribió: > > > > Si quieres mantener el formato data.table en la salida, mejor utilizar lapply: > > >> DT[,lapply(.SD,function(x) sum( is.na (x)))] > X1 X2 > 1: 2 3 > > > > De: "MªLuz Morales" < mlzmrls en gmail.com > > Para: "Olivier Nuñez" < onunez en unex.es > > Enviados: Viernes, 19 de Junio 2015 12:40:09 > Asunto: Re: [R-es] Sobre data.table > > Muchas gracias!! > > El 19 de junio de 2015, 12:29, Olivier Nuñez < onunez en unex.es > escribió: > > <blockquote> >> DT=data.table(X1=c(NA,NA,1,1,1),X2=c(1,1,NA,NA,NA)) >> DT[,apply(.SD,2,function(x) sum( is.na (x)))] > X1 X2 > 2 3 > > Un saludo. Olivier > > ----- Mensaje original ----- > De: "MªLuz Morales" < mlzmrls en gmail.com > > Para: "r-help-es" < r-help-es en r-project.org > > Enviados: Viernes, 19 de Junio 2015 12:08:42 > Asunto: [R-es] Sobre data.table > > Hola, > > quisiera determinar el número de filas distintas del valor NA para cada una > de las columnas de un data.table. Probablemente se puede hacer de una forma > muy compacta, pero no consigo hacerlo. > > Gracias > Un saludo > > MªLuz > > [[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 > > > > > > > </blockquote> > > > > > [[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_______________________________________________ R-help-es mailing list R-help-es en r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es
Te agradezco la ayuda, al final esto es lo que me ha funcionado: DatosConNA <- Datos[,lapply(.SD,as.character)] NumNA <- DatosConNA[,lapply(.SD,function(x) sum(x=="NA",na.rm=TRUE))] Es que tengo algunas columnas num y otras char, pero tanto en una como en otra quiero el numero de valores NA tanto num como si es char... Gracias! El 19 de junio de 2015, 15:45, Olivier Nuñez <onunez en unex.es> escribió:> Tan sólo para sacarle partido al paquete: > > > DT > X1 X2 Grupo > 1: NA 1 A > 2: NA 1 A > 3: 1 NA A > 4: 1 NA B > 5: 1 NA B > > DT[,lapply(.SD,function(x) sum(is.na(x))),by=Grupo] > Grupo X1 X2 > 1: A 2 1 > 2: B 0 2 > > Un saludo. Olivier > > ----- Mensaje original ----- > De: "Carlos J. Gil Bellosta" <cgb en datanalytics.com> > Para: "r-help-es" <r-help-es en r-project.org> > Enviados: Viernes, 19 de Junio 2015 15:06:15 > Asunto: Re: [R-es] Sobre data.table > > Hola, ¿qué tal? > > ¿Y por qué no, simplemente, sapply(mi.data.table, function(x) sum(is.na > (x)))? > > Un saludo, > > Carlos J. Gil Bellosta > http://www.datanalytics.com > > > > El día 19 de junio de 2015, 14:44, Olivier Nuñez <onunez en unex.es> > escribió: > > Si te devuelve 0 para todas las columnas es que no hay NA's. > > Tal vez son caracteres igual a "NA". > > Para asegurarte de ello, prueba > > > > DT[,lapply(.SD,function(x) sum(x=="NA",na.rm=TRUE))] > > > > > > > > ----- Mensaje original ----- > > > > De: "MªLuz Morales" <mlzmrls en gmail.com> > > Para: "Olivier Nuñez" <onunez en unex.es> > > CC: "r-help-es" <r-help-es en r-project.org> > > Enviados: Viernes, 19 de Junio 2015 14:17:46 > > Asunto: Re: [R-es] Sobre data.table > > > > Uy pues con mi data.table no lo hace bien, me devuelve 0 para todas las > columnas. Podría ser porque algunas columnas son char y otras num?? > > > > El 19 de junio de 2015, 13:03, Olivier Nuñez < onunez en unex.es > > escribió: > > > > > > > > Si quieres mantener el formato data.table en la salida, mejor utilizar > lapply: > > > > > >> DT[,lapply(.SD,function(x) sum( is.na (x)))] > > X1 X2 > > 1: 2 3 > > > > > > > > De: "MªLuz Morales" < mlzmrls en gmail.com > > > Para: "Olivier Nuñez" < onunez en unex.es > > > Enviados: Viernes, 19 de Junio 2015 12:40:09 > > Asunto: Re: [R-es] Sobre data.table > > > > Muchas gracias!! > > > > El 19 de junio de 2015, 12:29, Olivier Nuñez < onunez en unex.es > > escribió: > > > > <blockquote> > >> DT=data.table(X1=c(NA,NA,1,1,1),X2=c(1,1,NA,NA,NA)) > >> DT[,apply(.SD,2,function(x) sum( is.na (x)))] > > X1 X2 > > 2 3 > > > > Un saludo. Olivier > > > > ----- Mensaje original ----- > > De: "MªLuz Morales" < mlzmrls en gmail.com > > > Para: "r-help-es" < r-help-es en r-project.org > > > Enviados: Viernes, 19 de Junio 2015 12:08:42 > > Asunto: [R-es] Sobre data.table > > > > Hola, > > > > quisiera determinar el número de filas distintas del valor NA para cada > una > > de las columnas de un data.table. Probablemente se puede hacer de una > forma > > muy compacta, pero no consigo hacerlo. > > > > Gracias > > Un saludo > > > > MªLuz > > > > [[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 > > > > > > > > > > > > > > </blockquote> > > > > > > > > > > [[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 > > _______________________________________________ > R-help-es mailing list > R-help-es en r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es > > _______________________________________________ > 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]]
Hola, sapply(Datos, function(x) sum(is.na(x))) al aplicar esto me devuelve cero para todas las columnas, sin embargo si que hay elementos NA!! Un saludo MªLuz El 19 de junio de 2015, 15:06, Carlos J. Gil Bellosta <cgb en datanalytics.com> escribió:> Hola, ¿qué tal? > > ¿Y por qué no, simplemente, sapply(mi.data.table, function(x) sum(is.na > (x)))? > > Un saludo, > > Carlos J. Gil Bellosta > http://www.datanalytics.com > > > > El día 19 de junio de 2015, 14:44, Olivier Nuñez <onunez en unex.es> > escribió: > > Si te devuelve 0 para todas las columnas es que no hay NA's. > > Tal vez son caracteres igual a "NA". > > Para asegurarte de ello, prueba > > > > DT[,lapply(.SD,function(x) sum(x=="NA",na.rm=TRUE))] > > > > > > > > ----- Mensaje original ----- > > > > De: "MªLuz Morales" <mlzmrls en gmail.com> > > Para: "Olivier Nuñez" <onunez en unex.es> > > CC: "r-help-es" <r-help-es en r-project.org> > > Enviados: Viernes, 19 de Junio 2015 14:17:46 > > Asunto: Re: [R-es] Sobre data.table > > > > Uy pues con mi data.table no lo hace bien, me devuelve 0 para todas las > columnas. Podría ser porque algunas columnas son char y otras num?? > > > > El 19 de junio de 2015, 13:03, Olivier Nuñez < onunez en unex.es > > escribió: > > > > > > > > Si quieres mantener el formato data.table en la salida, mejor utilizar > lapply: > > > > > >> DT[,lapply(.SD,function(x) sum( is.na (x)))] > > X1 X2 > > 1: 2 3 > > > > > > > > De: "MªLuz Morales" < mlzmrls en gmail.com > > > Para: "Olivier Nuñez" < onunez en unex.es > > > Enviados: Viernes, 19 de Junio 2015 12:40:09 > > Asunto: Re: [R-es] Sobre data.table > > > > Muchas gracias!! > > > > El 19 de junio de 2015, 12:29, Olivier Nuñez < onunez en unex.es > > escribió: > > > > <blockquote> > >> DT=data.table(X1=c(NA,NA,1,1,1),X2=c(1,1,NA,NA,NA)) > >> DT[,apply(.SD,2,function(x) sum( is.na (x)))] > > X1 X2 > > 2 3 > > > > Un saludo. Olivier > > > > ----- Mensaje original ----- > > De: "MªLuz Morales" < mlzmrls en gmail.com > > > Para: "r-help-es" < r-help-es en r-project.org > > > Enviados: Viernes, 19 de Junio 2015 12:08:42 > > Asunto: [R-es] Sobre data.table > > > > Hola, > > > > quisiera determinar el número de filas distintas del valor NA para cada > una > > de las columnas de un data.table. Probablemente se puede hacer de una > forma > > muy compacta, pero no consigo hacerlo. > > > > Gracias > > Un saludo > > > > MªLuz > > > > [[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 > > > > > > > > > > > > > > </blockquote> > > > > > > > > > > [[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]]
Mª Luz, si el comando de Carlos te devuelve 0 es que no hay NA's. Da igual que tus columnas sean caracteres o número. Lo que intuyo es que tienes celdas con la frase "NA" que interpretas como NA. Mandanos el summary de tu data.table y lo vemos... ----- Mensaje original ----- De: "MªLuz Morales" <mlzmrls en gmail.com> Para: "Carlos J. Gil Bellosta" <cgb en datanalytics.com> CC: "r-help-es" <r-help-es en r-project.org> Enviados: Viernes, 19 de Junio 2015 16:02:58 Asunto: Re: [R-es] Sobre data.table Hola, sapply(Datos, function(x) sum(is.na(x))) al aplicar esto me devuelve cero para todas las columnas, sin embargo si que hay elementos NA!! Un saludo MªLuz El 19 de junio de 2015, 15:06, Carlos J. Gil Bellosta <cgb en datanalytics.com> escribió:> Hola, ¿qué tal? > > ¿Y por qué no, simplemente, sapply(mi.data.table, function(x) sum(is.na > (x)))? > > Un saludo, > > Carlos J. Gil Bellosta > http://www.datanalytics.com > > > > El día 19 de junio de 2015, 14:44, Olivier Nuñez <onunez en unex.es> > escribió: > > Si te devuelve 0 para todas las columnas es que no hay NA's. > > Tal vez son caracteres igual a "NA". > > Para asegurarte de ello, prueba > > > > DT[,lapply(.SD,function(x) sum(x=="NA",na.rm=TRUE))] > > > > > > > > ----- Mensaje original ----- > > > > De: "MªLuz Morales" <mlzmrls en gmail.com> > > Para: "Olivier Nuñez" <onunez en unex.es> > > CC: "r-help-es" <r-help-es en r-project.org> > > Enviados: Viernes, 19 de Junio 2015 14:17:46 > > Asunto: Re: [R-es] Sobre data.table > > > > Uy pues con mi data.table no lo hace bien, me devuelve 0 para todas las > columnas. Podría ser porque algunas columnas son char y otras num?? > > > > El 19 de junio de 2015, 13:03, Olivier Nuñez < onunez en unex.es > > escribió: > > > > > > > > Si quieres mantener el formato data.table en la salida, mejor utilizar > lapply: > > > > > >> DT[,lapply(.SD,function(x) sum( is.na (x)))] > > X1 X2 > > 1: 2 3 > > > > > > > > De: "MªLuz Morales" < mlzmrls en gmail.com > > > Para: "Olivier Nuñez" < onunez en unex.es > > > Enviados: Viernes, 19 de Junio 2015 12:40:09 > > Asunto: Re: [R-es] Sobre data.table > > > > Muchas gracias!! > > > > El 19 de junio de 2015, 12:29, Olivier Nuñez < onunez en unex.es > > escribió: > > > > <blockquote> > >> DT=data.table(X1=c(NA,NA,1,1,1),X2=c(1,1,NA,NA,NA)) > >> DT[,apply(.SD,2,function(x) sum( is.na (x)))] > > X1 X2 > > 2 3 > > > > Un saludo. Olivier > > > > ----- Mensaje original ----- > > De: "MªLuz Morales" < mlzmrls en gmail.com > > > Para: "r-help-es" < r-help-es en r-project.org > > > Enviados: Viernes, 19 de Junio 2015 12:08:42 > > Asunto: [R-es] Sobre data.table > > > > Hola, > > > > quisiera determinar el número de filas distintas del valor NA para cada > una > > de las columnas de un data.table. Probablemente se puede hacer de una > forma > > muy compacta, pero no consigo hacerlo. > > > > Gracias > > Un saludo > > > > MªLuz > > > > [[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 > > > > > > > > > > > > > > </blockquote> > > > > > > > > > > [[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]] _______________________________________________ R-help-es mailing list R-help-es en r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es