J'ai un bloc de données contenant un factor
. Lorsque je crée un sous-ensemble de cette trame de données à l'aide de subset
ou d'une autre fonction d'indexation, une nouvelle trame de données est créée. Cependant, lefactor
variable conserve tous ses niveaux d'origine, même si / s'ils n'existent pas dans la nouvelle trame de données.
Cela pose des problèmes lors du traçage à facettes ou de l'utilisation de fonctions qui dépendent des niveaux de facteur.
Quelle est la manière la plus succincte de supprimer des niveaux d'un facteur dans la nouvelle trame de données?
Voici un exemple:
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"