Mam ramkę danych zawierającą factor
. Kiedy tworzę podzbiór tej ramki danych za pomocą subset
lub innej funkcji indeksowania, tworzona jest nowa ramka danych. Jednak factor
zmienna zachowuje wszystkie swoje pierwotne poziomy, nawet jeśli / jeśli nie istnieją w nowej ramce danych.
Powoduje to problemy podczas wykonywania rysowania fasetowego lub korzystania z funkcji zależnych od poziomów czynników.
Jaki jest najbardziej zwięzły sposób usunięcia poziomów z czynnika w nowej ramce danych?
Oto przykład:
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"