给定以下模拟数据:
set.seed(123)
x <- data.frame(let = sample(letters[1:5], 100, replace = T),
num = sample(1:10, 100, replace = T))
y <- subset(x, let != 'a')
创建y$let
收益率表
a b c d e
0 20 21 22 18
但我不想a
再展示了。如果我尝试这样做:
levels(y$let) <- factor(y$let)
我把频率弄乱了,因为现在table(y$let)
给了我
b d c e
0 20 21 40
我知道我可以xtabs(~ y$let, drop.unused.levels = T)
解决这个问题,但它不会重置其核心的变量级别(这对我来说很重要,因为这是我对数据集所做的早期更改,它将在整个过程中进行整体分析)。此外,xtabs
与 是不同的类table
,这会让我在项目后期感到头疼。
问题是:如何自动更改levels(y$let)
,使其不显示创建子集时删除的级别?在这种情况下,我怎样才能让它显示[1] "b" "c" "d" "e"
?