我有一个包含因子的数据框.当我使用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"
Run Code Online (Sandbox Code Playgroud) 假设:
set.seed(42)
x<-rep(c("A","B","C"), c(3,4,1))
y<-rep(c("V","W"),c(5,3))
z<-rnorm(8,-2,1)
df<-data.frame(x,y,z)
boxplot(z~x+y,df)
Run Code Online (Sandbox Code Playgroud)
我希望我的情节包含超过一个元素的组.这意味着我希望我的情节只显示AV,BV和BW此外,由于我的图表有大约70个组,我不想通过手工编写列表来实现.
谢谢