Tengo un marco de datos que contiene a factor
. Cuando creo un subconjunto de este marco de datos usando subset
u otra función de indexación, se crea un nuevo marco de datos. Sin embargo, la factor
variable 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"