Drop-Faktor-Ebenen in einem untergeordneten Datenrahmen

Ich habe einen Datenrahmen, der einen Faktor enthält. Beim Erstellen einer Teilmenge dieses Datenrahmens verwende ichsubset() oder einer anderen Indizierungsfunktion wird ein neuer Datenrahmen erstellt. Die Faktorvariable behält jedoch alle ihre ursprünglichen Ebenen bei - auch wenn sie im neuen Datenrahmen nicht vorhanden sind.

Dies bereitet Kopfschmerzen, wenn facettierte Zeichnungen erstellt oder Funktionen verwendet werden, die auf Faktorstufen basieren.

Was ist der prägnanteste Weg, um Ebenen aus einem Faktor in meinem neuen Datenrahmen zu entfernen?

Hier ist mein 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    

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

Antworten auf die Frage(13)

Ihre Antwort auf die Frage