Determine los tipos de datos de las columnas de un dataframe

Estoy usando R y he cargado datos en un dataframe utilizando read.csv() . ¿Cómo determino el tipo de datos de cada columna en el dataframe?

Su mejor apuesta para comenzar es usar ?str() . Para explorar algunos ejemplos, hagamos algunos datos:

 set.seed(3221) # this makes the example exactly reproducible my.data <- data.frame(y=rnorm(5), x1=c(1:5), x2=c(TRUE, TRUE, FALSE, FALSE, FALSE), X3=letters[1:5]) 

La solución de @Wilmer E Henao H está muy simplificada:

 sapply(my.data, class) y x1 x2 X3 "numeric" "integer" "logical" "factor" 

El uso de str() le proporciona esa información más elementos extra (como los niveles de sus factores y los primeros valores de cada variable):

 str(my.data) 'data.frame': 5 obs. of 4 variables: $ y : num 1.03 1.599 -0.818 0.872 -2.682 $ x1: int 1 2 3 4 5 $ x2: logi TRUE TRUE FALSE FALSE FALSE $ X3: Factor w/ 5 levels "a","b","c","d",..: 1 2 3 4 5 

El enfoque de @Gavin Simpson también se simplifica, pero proporciona información ligeramente diferente a la class() :

 sapply(my.data, typeof) y x1 x2 X3 "double" "integer" "logical" "integer" 

Para obtener más información sobre class , typeof y middle child, mode , consulte este excelente hilo SO: una encuesta exhaustiva de los tipos de cosas en R. 'mode' y 'class' y 'typeof' son insuficientes .

 sapply(yourdataframe, class) 

Donde yourdatame es el nombre del dataframe que está usando

Yo sugeriría

 sapply(foo, typeof) 

si necesita los tipos reales de los vectores en el dataframe. class() es algo así como una bestia diferente.

Si no necesita obtener esta información como un vector (es decir, no necesita hacer otra cosa programáticamente más adelante), simplemente use str(foo) .

En ambos casos, foo se reemplazará por el nombre de su dataframe.

Simplemente pase su dataframe a la siguiente función:

 data_types <- function(frame) { res <- lapply(frame, class) res_frame <- data.frame(unlist(res)) barplot(table(res_frame), main="Data Types", col="steelblue", ylab="Number of Features") } 

para producir un gráfico de todos los tipos de datos en su dataframe. Para el conjunto de datos del iris obtenemos lo siguiente:

 data_types(iris) 

enter image description here

Aquí hay una función que forma parte del paquete helpRFunctions que devolverá una lista de todos los diversos tipos de datos en su dataframe, así como los nombres de variables específicos asociados con ese tipo.

 install.package('devtools') # Only needed if you dont have this installed. library(devtools) install_github('adam-m-mcelhinney/helpRFunctions') library(helpRFunctions) my.data <- data.frame(y=rnorm(5), x1=c(1:5), x2=c(TRUE, TRUE, FALSE, FALSE, FALSE), X3=letters[1:5]) t <- list.df.var.types(my.data) t$factor t$integer t$logical t$numeric 

Entonces podría hacer algo como var(my.data[t$numeric]) .

Espero que esto sea útil!

Como no fue declarado claramente, simplemente agrego esto:

Estaba buscando una forma de crear una tabla que contenga la cantidad de apariciones de todos los tipos de datos .

Digamos que tenemos un data.frame con dos data.frame numéricas y una columna lógica

 dta <- data.frame(a = c(1,2,3), b = c(4,5,6), c = c(TRUE, FALSE, TRUE)) 

Puede resumir el número de columnas de cada tipo de datos con ese

 table(unlist(lapply(dta, class))) # logical numeric # 1 2 

Esto es extremadamente útil, si tiene muchas columnas y desea obtener una visión general rápida.

Para dar crédito: esta solución fue inspirada por la respuesta de @Cybernetic .

    Intereting Posts