3.3 Factores
Un factor en R es un tipo de vector con un enfoque estadístico que se usa para variables categóricas.
La característica de un factor es que tiene un número limitado de valores llamados niveles.
Existen dos tipos de variables categóricas: nominal u ordinal. En R un factor también se puden definir de esta forma.Las variables categóricas son comunes en bases de datos de encuestas.
3.3.1 Variable categórica nominal
Un ejemplo de variable categórica nominal es el sexo de una persona: femenino (F) o masculino (M)
sex_vec <- c("F", "M", "M", "F", "M")
En R un factor se define con la función factor()
.
sex_fct <- factor(sex_vec)
sex_fct
## [1] F M M F M
## Levels: F M
En automático define los niveles del factor y los ordena en orden alfabético. Si se desea cambiar esto el argumento levels = c()
permite asignar un vector de niveles específico.
sex_lev_fct <- factor(sex_vec, levels = c("M", "F"))
sex_lev_fct
## [1] F M M F M
## Levels: M F
3.3.2 Variable categórica ordinal
Una variable categórica ordinal como el nombre lo dice tiene
orden en los niveles del factor.
Para dar orden a los niveles en R se modifica el argumento ordered = TRUE
de la función factor()
.
Se tiene el siguiente vector de temperaturas y se desea crear un factor ordenado de menor temperatura a mayor temperatura.
temp_vec <- c("High", "Low", "Medium", "Low",
"Low", "Medium", "High", "Low",
"Medium", "Low", "Low")
temp_fct <- factor(temp_vec,
levels = c("Low", "Medium", "High"),
ordered = T)
temp_fct
## [1] High Low Medium Low Low Medium High Low Medium Low
## [11] Low
## Levels: Low < Medium < High
Ahora los niveles tiene una jerarquía.
levels(temp_fct)
## [1] "Low" "Medium" "High"
Una forma de modificar las etiquetas de los niveles es reasignando un vector.
levels(temp_fct) <- c("L", "M", "H")
temp_fct
## [1] H L M L L M H L M L L
## Levels: L < M < H
3.3.3 Resúmen de factores
La función summary()
permite resumir la información del vector. En particular para un factor calcula la frecuencia de cada nivel, lo que no sucede si es un caracter.
summary(sex_vec)
## Length Class Mode
## 5 character character
summary(sex_fct)
## F M
## 2 3
Ej: Analistas
Se tienen 5 analistas, cada uno con las siguientes características de velocidad de trabajo.
Analista 1: rápido Analista 2: normal Analista 3: normal Analista 4: rápido Analista 5: lento
- Crea un factor ordinal de analistas
analistas_vec <- c()
analistas_fct <- factor(,
levels = ,
ordered = )
- Comprueba si el analista 2 es más rápido que el analista 5. Tip: es una comparación
>
.
analistas_vec[] > analistas_vec[]