Curso

Los factores son un tipo de variable en R que representan variables categóricas y almacenan los datos en niveles. Su uso principal es en análisis de datos, especialmente en análisis estadístico. Además, ayudan a reducir la redundancia y ahorrar memoria.
Nota: Una variable categórica toma valores en función de etiquetas o nombres. Por ejemplo, el grupo sanguíneo de una persona puede ser A, B, AB u O.
Función factor
Uso: categorizar datos con un número reducido de valores.
Parámetros: factor(v): v puede ser un vector de valores.
Veamos un ejemplo práctico de un factor.
Abajo tienes código con dos variables categóricas, "Male" y "Female", también llamadas valores del factor.
gender <- c("Male","Female","Female","Male","Female")
Creemos un factor para el género usando 'factor(gender)' y guardándolo en la variable 'gender.factor'.
gender.factor <- factor(gender)
gender.factor
- Male
- Female
- Female
- Male
- Female
Niveles:
- 'Female'
- 'Male'
El código anterior devuelve la siguiente salida:
Male Female Female Male Female
Levels:
'Female' 'Male'
Como ves, los valores se imprimen igual que en el vector de entrada. Además, los "Levels" ("Female" y "Male") aparecen ordenados alfabéticamente.
Estructura de la función factor
Examinemos la estructura del factor usando 'str(gender.factor)' en el siguiente código.
str(gender.factor)
Factor w/ 2 levels "Female","Male": 2 1 1 2 1
Factor w/ 2 levels "Female","Male": 2 1 1 2 1
La salida muestra que hay un factor con 2 niveles. factor convierte el vector de caracteres gender en un vector de valores enteros. "Female" es el primer nivel (codificado como 1) y "Male" es el segundo (codificado como 2).
El objetivo principal de codificar de caracteres a numéricos es que las categorías se repiten y, de otro modo, ocuparían mucha memoria. Usar factores reduce esa carga y ahorra espacio.
Cambiar el orden de los niveles
Vamos a cambiar el orden de los niveles, de modo que "Female" pase a ser 2 y "Male" sea 1.
Crearemos un nuevo factor de género cambiando los niveles de "Male" y "Female" pasándolos como vector al argumento "levels". El resultado se guarda en la variable "gender.factor2".
gender.factor2 <- factor(gender,levels=c("Male","Female"))
gender.factor2
str(gender.factor2)
- Male
- Female
- Female
- Male
- Female
Niveles:
- 'Male'
- 'Female'
Factor w/ 2 levels "Male","Female": 1 2 2 1 2
Se imprime 'gender.factor2' junto con su estructura usando 'str(gender.factor2)', donde se aprecian los siguientes cambios.
Male Female Female Male Female
Levels:
'Male' 'Female'
Factor w/ 2 levels "Male","Female": 1 2 2 1 2
Ahora la codificación es "Male" = 1 y "Female" = 2. Es diferente de 'gender.factor', donde era al revés.
Renombrar niveles de un factor
Vamos a cambiar el nombre de los valores del vector de entrada usando 'levels' como primer argumento con los valores "Male" y "Female", y 'labels' como segundo argumento con las nuevas etiquetas "Gen_Male" y "Gen_Female" respectivamente.
factor(gender,levels = c("Male","Female"),labels = c("Gen_Male","Gen_Female"))
- Gen_Male
- Gen_Female
- Gen_Female
- Gen_Male
- Gen_Female
Niveles:
- 'Gen_Male'
- 'Gen_Female'
Gen_Male Gen_Female Gen_Female Gen_Male Gen_Female
Levels:
'Gen_Male' 'Gen_Female'
La salida muestra que el nombre "Male" pasa a "Gen_Male" y "Female" a "Gen_Female".
Ordenar una variable categórica
Veamos otro ejemplo con valores categóricos ordinales, donde el orden importa. Por ejemplo, para la talla de un pantalón puede haber L ("L"), XL ("XL") y XXL ("XXL"), en orden ascendente. El código siguiente crea el vector de caracteres "L", "XL" y "XXL" y lo guarda en 'pant'. 'pant.factor' es la variable factor con los niveles en orden ascendente 'levels = c("L", "XL", "XXL")' y 'ordered = TRUE', que permite comparar según ese orden.
pant <- c("XL","L","XL","XXL","L","XL")
pant.factor <- factor(pant,ordered = TRUE,levels = c("L","XL","XXL"))
pant.factor
pant.factor[1] > pant.factor[2]
- XL
- L
- XL
- XXL
- L
- XL
Niveles:
- 'L'
- 'XL'
- 'XXL'
TRUE
XL L XL XXL L XL
Levels:'L'< 'XL' < 'XXL'
TRUE
Primero se imprime el vector (XL, L, XL, XXL, L, XL) con 'pant.factor'. Los niveles 'L' < 'XL' < 'XXL' quedan en orden ascendente, como muestra la consola. Además, 'pant.factor[1] > pant.factor[2]' compara si "XL" es mayor que "L", lo que devuelve TRUE.
¡Enhorabuena!
¡Has llegado al final de este tutorial!
En este tutorial has visto la función factor en R con un ejemplo, su estructura, cómo cambiar el orden de los niveles, cómo renombrarlos y cómo ordenar valores categóricos.
Si quieres seguir aprendiendo R, echa un vistazo al curso de DataCamp Introduction to R.
No te pierdas también el tutorial Using Functions in R.
