Уровни коэффициента отбрасывания в заданном кадре данных

У меня есть фрейм данных, содержащий фактор. Когда я создаю подмножество этого фрейма данных, используяsubset() или другая функция индексации, создается новый фрейм данных. Однако переменная фактора сохраняет все свои исходные уровни - даже если они не существуют в новом фрейме данных.

Это создает головную боль при выполнении граненых графиков или при использовании функций, основанных на факторных уровнях.

Какой самый краткий способ удалить уровни из фактора в моем новом фрейме данных?

Вот мой пример:

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    

## but the levels are still there!
levels(subdf$letters)
## [1] "a" "b" "c" "d" "e"

Ответы на вопрос(13)

Ваш ответ на вопрос