如何从模型矩阵中删除未使用的级别

How to remove unused levels from model matrix

我创建了一个模型矩阵。一些变量是类别变量。 过滤数据后,某些级别不再存在于数据集中。 我怎样才能删除未使用的级别? 我可以在分类变量上应用因子函数吗?

您可以使用 base R 中的 droplevels 函数。让 x 成为您的因素/分类变量:

x <- as.factor(c("cat", "dog","cat", "gator"))
x
# [1] cat   dog   cat   gator
# Levels: cat dog gator

# somewhere in analysis you removed the only entry for a level
x <- x[x!= "gator"]     
x
# [1] cat dog cat
# Levels: cat dog gator

droplevels(x)
# [1] cat dog cat
# Levels: cat dog

参考droplevels R documentation了解更多详情。