Como remover categorias (levels) não utilizadas

This post was kindly contributed by Anotações R Statistical Computing - go there to comment and to read the full post.

Um problema que encontramos ao subdividir um conjunto de dados é que as categorias excluídas continuam aparecendo nos sumários e nos gráficos.

Para se ver livre destas deve-se utilizar a função droplevels, que foi inserida na versão 2.12.0. No exemplo abaixo crio o data.frame dados1 onde a coluna categ possui três níveis: “a”, “b” e “c”. Em seguida crio o data.frame dados2 excluindo as linhas da categoria “b”. Veja que ela ainda conta como um nível e aparece no gráfico. Com a utilização da função droplevels este problema é contornado.

categ <- rep(c("a","b","c"),c(10,10,10))
valor<-c(rnorm(10,5,2),rnorm(10,8,4),rnorm(10,12,3))
dados1<-data.frame(categ,valor)
levels(dados1$categ)
[1] "a" "b" "c"
plot(dados1)
dados2<-subset(dados1,categ!="b")
levels(dados2$categ)
[1] "a" "b" "c"
plot(dados2) 
dados3<-droplevels(subset(dados1,categ!="b"))
levels(dados3$categ)
[1] "a" "c"
plot(dados3) 

Em casos específicos pode-se utilizar:
levels(dados2$categ[,drop=T])
[1] "a" "c"

Tags: , , , , , ,

Comments are closed.