Ho un frame di dati contenente a factor
. Quando creo un sottoinsieme di questo frame di dati utilizzando subset
o un'altra funzione di indicizzazione, viene creato un nuovo frame di dati. Tuttavia, la factor
variabile mantiene tutti i suoi livelli originali, anche quando / se non esistono nel nuovo frame di dati.
Ciò causa problemi quando si esegue la stampa sfaccettata o si utilizzano funzioni che si basano sui livelli dei fattori.
Qual è il modo più conciso per rimuovere i livelli da un fattore nel nuovo frame di dati?
Ecco un esempio:
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"