我有一个包含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"