Eu tenho um quadro de dados contendo um factor
. Quando eu crio um subconjunto desse quadro de dados usando subset
ou outra função de indexação, um novo quadro de dados é criado. No entanto, a factor
variável mantém todos os seus níveis originais, mesmo quando / se eles não existirem no novo quadro de dados.
Isso causa problemas ao fazer plotagens facetadas ou ao usar funções que dependem de níveis de fatores.
Qual é a maneira mais sucinta de remover níveis de um fator no novo quadro de dados?
Aqui está um exemplo:
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"