Ich habe einen Datenrahmen mit a factor
. Wenn ich eine Teilmenge dieses Datenrahmens mit subset
oder einer anderen Indizierungsfunktion erstelle , wird ein neuer Datenrahmen erstellt. Die factor
Variable behält jedoch alle ursprünglichen Ebenen bei, auch wenn sie im neuen Datenrahmen nicht vorhanden sind.
Dies führt zu Problemen beim Erstellen von Facetten oder beim Verwenden von Funktionen, die auf Faktorstufen beruhen.
Was ist der prägnanteste Weg, um Ebenen aus einem Faktor im neuen Datenrahmen zu entfernen?
Hier ist ein Beispiel:
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"