Saltar al contenido principal

Tutorial de factores en R

Aprende a usar la función factor en R con un ejemplo: su estructura, cómo ordenar niveles, renombrarlos y cómo ordenar valores categóricos.
· 5 min leer

Explora con IA

banner

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
  1. Male
  2. Female
  3. Female
  4. Male
  5. Female
Niveles:
  1. 'Female'
  2. '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)
  1. Male
  2. Female
  3. Female
  4. Male
  5. Female
Niveles:
  1. 'Male'
  2. '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"))
  1. Gen_Male
  2. Gen_Female
  3. Gen_Female
  4. Gen_Male
  5. Gen_Female
Niveles:
  1. 'Gen_Male'
  2. '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]
  1. XL
  2. L
  3. XL
  4. XXL
  5. L
  6. XL
Niveles:
  1. 'L'
  2. 'XL'
  3. '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.
 

Temas

Relacionado

Tutorial

Tutorial de ordenación en R con order()

Tutorial

Tutorial de regresión lineal en R