En este artículo, veremos cómo crear una tabla de frecuencia para datos categóricos en el lenguaje de programación R.
Método 1: Usar el método table()
Las tablas en R se utilizan para organizar y resumir mejor las variables categóricas. El método table() toma los factores de clasificación cruzada que pertenecen a un vector para construir una tabla de contingencia de los conteos en cada combinación de niveles de factores. Una tabla de contingencia es básicamente una tabulación de los recuentos y/o porcentajes de múltiples variables. Excluye el conteo de cualquier valor faltante de la variable de factor suministrada al método. La salida devuelta tiene la forma de una tabla. Este método se puede utilizar para la tabulación cruzada y el análisis estadístico.
table (fac-vec, .. )
Se puede convertir a un marco de datos utilizando el método as.data.frame() que devuelve la salida en forma de una estructura tabular organizada en dos columnas, la primera que contiene la variable del factor de entrada y la segunda, los recuentos de las variables correspondientes. , designado por «Freq».
as.data.frame(table)
En caso de que se especifique un solo argumento, el número de filas en el marco de datos resultante es equivalente al número de niveles únicos del factor. El método rep() también se usa para repetir el primer argumento n número de veces.
Código:
R
# creating a factor vector vec <- factor(c(letters[1 : 12], letters[8 : 24], letters[4 : 6])) # replicate the vector 2 times fac_vec <- rep(vec , 2) # generating frequency table of # the factor vector freq <- table(fac_vec) print ("Frequency DataFrame") # converting the table into dataframe freq_df <- as.data.frame(freq) print (freq_df)
Producción:
[1] "Frequency DataFrame" fac_vec Freq 1 a 2 2 b 2 3 c 2 4 d 4 5 e 4 6 f 4 7 g 2 8 h 4 9 i 4 10 j 4 11 k 4 12 l 4 13 m 2 14 n 2 15 o 2 16 p 2 17 q 2 18 r 2 19 s 2 20 t 2 21 u 2 22 v 2 23 w 2 24 x 2
El método table() puede tomar varios argumentos como entrada y, como resultado, se devuelve un marco de datos de todas las combinaciones únicas posibles. Cada valor del primer argumento se asigna al valor del segundo argumento y se devuelve la frecuencia de esta combinación.
R
set.seed(1) # creating a dataframe data_frame = data.frame( "col1" = sample(1:2, 8, replace = TRUE) , "col2" = sample(letters[1:3], 8, replace = TRUE) ) print ("Data Frame") print (data_frame) # generating frequency table of the # factor vector freq <- table(data_frame$col1, data_frame$col2) print ("Frequency DataFrame") # converting the table into dataframe freq_df <- as.data.frame(freq) print (freq_df)
Producción:
[1] "Data Frame" col1 col2 1 1 b 2 2 b 3 1 c 4 1 c 5 2 a 6 1 a 7 1 a 8 1 b [1] "Frequency DataFrame" Var1 Var2 Freq 1 1 a 2 2 2 a 1 3 1 b 2 4 2 b 1 5 1 c 2 6 2 c 0
El siguiente programa ilustra el concepto de calcular la distribución de frecuencias sobre un gran conjunto de datos y visualizarlo:
R
library(data.table) library("ggplot2") # importing the dataset file <- fread('ch11b.dat') print ("Dataset 5 rows") head(file) data <- as.data.frame(file) freq <- table(data$V5) print ("Frequency count of column V5") print (freq) # re-order levels compute <- function(x) { freq <- table(x) factor(x, levels = names(sort(freq))) } # plotting the data ggplot(data, aes(x = compute(`V5`))) + geom_bar() + xlab("Gender")
Producción:
[1] "Dataset 5 rows" V1 V2 V3 V4 V5 1: 1 307 930 36.58 0 2: 2 307 940 36.73 0 3: 3 307 950 36.93 0 4: 4 307 1000 37.15 0 5: 5 307 1010 37.23 0 6: 6 307 1020 37.24 0 [1] "Frequency count of column V5" 0 1 38 62
Método 2: Usando el método count()
El paquete «plyr» se usa para la manipulación y modificación de datos, que se puede instalar en el espacio de trabajo usando:
install.packages("plyr")
El método count() en el paquete plyr se usa para mantener un conteo de frecuencia de las variables categóricas encontradas. La llamada al método es equivalente a as.data.frame(table(x)). Sin embargo, no incluye combinaciones con cuentas cero. Este método se considera mejor que el método table() porque es más rápido y devuelve la salida en forma de marco de datos, con encabezados directos para filas y columnas.
count( fac-vec, .. )
Código:
R
# importing required libraries library("plyr") # creating a factor vector vec <- factor(c(letters[1:12], letters[8:24], letters[4:6])) # replicate the vector 2 times fac_vec <- rep(vec , 2) # generating frequency table of the # factor vector freq <- count(fac_vec) print ("Frequency DataFrame") print (freq)
Producción
[1] "Frequency DataFrame" x Freq 1 a 2 2 b 2 3 c 2 4 d 4 5 e 4 6 f 4 7 g 2 8 h 4 9 i 4 10 j 4 11 k 4 12 l 4 13 m 2 14 n 2 15 o 2 16 p 2 17 q 2 18 r 2 19 s 2 20 t 2 21 u 2 22 v 2 23 w 2 24 x 2
El siguiente fragmento de código ilustra el uso del método table() en conjuntos de datos muy grandes de la potencia de 10 5 elementos divididos en dos categorías Masculino y Femenino:
R
# creating a factor vector fac_vec <- factor(sample(c("Male", "Female"), 100000 , replace = TRUE)) # generating frequency table of the factor vector freq <- count(fac_vec) print ("Frequency DataFrame") # converting the table into data frame freq_df <- as.data.frame(freq) print (freq_df)
Producción:
[1] "Frequency DataFrame" x freq 1 Female 49936 2 Male 50064