Tengo un marco de datos que contiene a factor. Cuando creo un subconjunto de este marco de datos usando subsetu otra función de indexación, se crea un nuevo marco de datos. Sin embargo, la factorvariable conserva todos sus niveles originales, incluso cuando / si no existen en el nuevo marco de datos.
Esto causa problemas al hacer trazados facetados o al usar funciones que dependen de niveles de factores.
¿Cuál es la forma más sucinta de eliminar niveles de un factor en el nuevo marco de datos?
Aquí hay un ejemplo:
df <- data.frame(letters=letters[1:5],
numbers=seq(1:5))
levels(df$letters)
## [1] "a" "b" "c" "d" "e"
subdf <- subset(df, numbers <= 3)
## letters numbers
## 1 a 1
## 2 b 2
## 3 c 3
# all levels are still there!
levels(subdf$letters)
## [1] "a" "b" "c" "d" "e"