Skip to content

[R-es] Sobre data.table

13 messages · Olivier Nuñez, MªLuz Morales, Carlos J. Gil Bellosta

#
Si quieres mantener el formato data.table en la salida, mejor utilizar lapply:
X1 X2 
1: 2 3 


----- Mensaje original -----

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ó:
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 


_______________________________________________ 
R-help-es mailing list 
R-help-es en r-project.org 
https://stat.ethz.ch/mailman/listinfo/r-help-es
#
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ó:

  
  
#
He intentado transformar a num de esta forma:

Datos <- Datos[,lapply(.SD,as.numeric)]
DatosConNA <- Datos[,lapply(.SD,function(x) sum(is.na(x)))]

Pero me asigna el valor NA a TODAS las filas de las columnas que tenían el
valor NA en alguna fila...

El 19 de junio de 2015, 14:17, MªLuz Morales <mlzmrls en gmail.com> escribió:

  
  
#
He intentado transformar a num de esta forma:

Datos <- Datos[,lapply(.SD,as.numeric)]
DatosConNA <- Datos[,lapply(.SD,function(x) sum(is.na(x)))]

Pero me asigna el valor NA a TODAS las filas de las columnas que tenían el
valor NA en alguna fila...en Datos

El 19 de junio de 2015, 14:22, MªLuz Morales <mlzmrls en gmail.com> 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:
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>
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 


_______________________________________________ 
R-help-es mailing list 
R-help-es en r-project.org 
https://stat.ethz.ch/mailman/listinfo/r-help-es 






</blockquote>
#
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ó:
#
Tan sólo para sacarle partido al paquete:
X1 X2 Grupo
1: NA  1     A
2: NA  1     A
3:  1 NA     A
4:  1 NA     B
5:  1 NA     B
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ó:
_______________________________________________
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ó:

  
  
#
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ó:

  
  
#
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ó:
_______________________________________________
R-help-es mailing list
R-help-es en r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es
#
Este es el summary de mi data.table Datos:
In.hospital_death    SAPS.I              SOFA                Age
Gender             Height             ICUType
 Min.   :0.0000    Length:4000        Length:4000        Min.   :15.00
Length:4000        Length:4000        Min.   :1.00
 1st Qu.:0.0000    Class :character   Class :character   1st Qu.:52.75
Class :character   Class :character   1st Qu.:2.00
 Median :0.0000    Mode  :character   Mode  :character   Median :67.00
Mode  :character   Mode  :character   Median :3.00
 Mean   :0.1385                                          Mean   :64.25
                                    Mean   :2.76
 3rd Qu.:0.0000                                          3rd Qu.:78.00
                                    3rd Qu.:4.00
 Max.   :1.0000                                          Max.   :90.00
                                    Max.   :4.00
    Weight               HR                Temp               GCS
     HCT                BUN
 Length:4000        Length:4000        Length:4000        Length:4000
 Length:4000        Length:4000
 Class :character   Class :character   Class :character   Class :character
  Class :character   Class :character
 Mode  :character   Mode  :character   Mode  :character   Mode  :character
  Mode  :character   Mode  :character






  Creatinine         Platelets             WBC                 Na
     HCO3                K
 Length:4000        Length:4000        Length:4000        Length:4000
 Length:4000        Length:4000
 Class :character   Class :character   Class :character   Class :character
  Class :character   Class :character
 Mode  :character   Mode  :character   Mode  :character   Mode  :character
  Mode  :character   Mode  :character






      Mg              Glucose             Urine            Urine.Sum
    NISysABP          NIDiasABP
 Length:4000        Length:4000        Length:4000        Length:4000
 Length:4000        Length:4000
 Class :character   Class :character   Class :character   Class :character
  Class :character   Class :character
 Mode  :character   Mode  :character   Mode  :character   Mode  :character
  Mode  :character   Mode  :character






    NIMAP                pH               PaCO2               PaO2
    DiasABP             SysABP
 Length:4000        Length:4000        Length:4000        Length:4000
 Length:4000        Length:4000
 Class :character   Class :character   Class :character   Class :character
  Class :character   Class :character
 Mode  :character   Mode  :character   Mode  :character   Mode  :character
  Mode  :character   Mode  :character






     MAP                FiO2             MechVent           Lactate
     SaO2               AST
 Length:4000        Length:4000        Length:4000        Length:4000
 Length:4000        Length:4000
 Class :character   Class :character   Class :character   Class :character
  Class :character   Class :character
 Mode  :character   Mode  :character   Mode  :character   Mode  :character
  Mode  :character   Mode  :character






     ALT             Bilirubin             ALP              Albumin
   RespRate          TroponinT
 Length:4000        Length:4000        Length:4000        Length:4000
 Length:4000        Length:4000
 Class :character   Class :character   Class :character   Class :character
  Class :character   Class :character
 Mode  :character   Mode  :character   Mode  :character   Mode  :character
  Mode  :character   Mode  :character






 Cholesterol         TroponinI
 Length:4000        Length:4000
 Class :character   Class :character
 Mode  :character   Mode  :character



El 19 de junio de 2015, 16:10, Olivier Nuñez <onunez en unex.es> escribió:

  
  
#
Hola, ¿qué tal?

Estoy con Olivier. Es probable que hayas leído datos en que aparecían
valores "NA" pero que se hayan leído no como nulos sino como cadenas
"normales" con valor NA. Deberías echarle un vistazo al argumento
na.strings de la función de lectura que estés utilizando.

Finalmente, para procesar tablas de 4000 filas no es recomendable
meterse en el tinglado de data.table. Creo que solo como a partir de
tablas con un tamaño dos órdenes de magnitud superiores comenzarías a
detectar diferencias de rendimiento.

Un saludo,

Carlos J. Gil Bellosta
http://www.datanalytics.com


El día 19 de junio de 2015, 17:07, MªLuz Morales <mlzmrls en gmail.com> escribió:
#
Hola, si, efectivamente yo lo que tengo es la cadena NA, vale, ya lo veo
claro... gracias

Con respecto a data.table, lo estoy usando porque en programas que tardaba
3 horas en ejecutarse usando data.table, tardaba muy pocos segundos usando
data.table, efectivamente era una tabla grande,con 2 millones de filas.

Gracias a todos por la ayuda que prestais a los que queremos (o tenemos)
que aprender R
 El 19/06/2015 17:24, "Carlos J. Gil Bellosta" <cgb en datanalytics.com>
escribió: