Ich habe einen Datenrahmen, der eine factor
. Wenn ich eine Teilmenge dieses Datenrahmens mit subset
oder einer anderen Indizierungsfunktion wird ein neuer Datenrahmen erstellt. Allerdings muss die factor
Variable behält alle ihre ursprünglichen Ebenen bei, auch wenn sie im neuen Datenrahmen nicht vorhanden sind.
Dies führt zu Problemen bei der Erstellung von Facettenplots oder bei der Verwendung von Funktionen, die auf Faktorstufen beruhen.
Wie lassen sich Ebenen aus einem Faktor im neuen Datenrahmen am einfachsten 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"