У мене є кадр даних, що містить factor
. Коли я створюю підмножину цього фрейму даних за допомогою subset
іншої функції індексації, створюється новий кадр даних. Однак factor
змінна зберігає всі свої початкові рівні, навіть коли / якщо вони не існують у новому фреймі даних.
Це спричиняє проблеми під час гранічного графіку або використання функцій, які залежать від рівня фактора.
Який найкоротший спосіб видалити рівні з фактору в новому фреймі даних?
Ось приклад:
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"