jdd <- data.frame(deslettres=letters[1:10],
desnombres=seq(1:10),
desfacteurs=c(rep("oui",5), rep("non", 5)))
levels(jdd$deslettres)
[1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j"
# il y a 10 niveaux pour la variable qualitative "deslettres"
# en filtrant sur les nombres....
library(dplyr)
unextrait<-filter(jdd,desnombres > 5)
levels(unextrait$deslettres)
[1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j"
# ...le nouveau jeu de données garde les anciens noms de niveaux de "deslettres"
Pour s’en débarrasser, depuis R 2.12.0, la fonction droplevels() rend cette opération aisée…
# ...sur tout le jeu de données :
droplevels(unextrait)
summary(unextrait)
# ...sur une variable en particulier :
droplevels(unextrait$deslettres)
summary(unextrait)
# ...sur tout le jeu de données sauf celle mentionnées dans l'argument except :
droplevels(unextrait, except="desfacteurs")