我有一个数据帧包含factor。当我使用subset或其他索引函数创建这个数据帧的子集时,就会创建一个新的数据帧。然而,factor变量保留了所有的原始级别,即使它们不存在于新的数据框架中。
这在绘制面图或使用依赖于因子级别的函数时会导致问题。
在新的数据框架中从一个因子中移除级别最简洁的方法是什么?
这里有一个例子:
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"
 
                                
                             
                                
                             
                                
                             
                                
                             
                                
                             
                                
                             
                                
                             
                                
                             
                                
                             
                                
                             
                                
                             
                                
                             
                                
                             
                                
                             
                                
                            