6.9 重计算因子水平
6.9.1 问题
你想要重新计算一个因子的水平。这在因子水平实际并没有出现在数据中时非常有用。它可能发生在数据的导入或者当你移除一些行时。
6.9.2 方案
对于单个因子变量:
# 创建额外的因子水平 (gamma)
x <- factor(c("alpha", "beta", "alpha"), levels = c("alpha",
"beta", "gamma"))
x
#> [1] alpha beta alpha
#> Levels: alpha beta gamma
# 移除额外的因子水平
x <- factor(x)
x
#> [1] alpha beta alpha
#> Levels: alpha beta
当导入数据之后,你可能有一个混合因子变量和其他向量的数据框,然后想要重新计算所有因子的水平。你可以使用 droplevels()
函数实现这一点。
# 创建一些因子的数据框 (有额外的因子水平)
df <- data.frame(x = factor(c("alpha", "beta", "alpha"),
levels = c("alpha", "beta", "gamma")), y = c(5, 8, 2),
z = factor(c("red", "green", "green"), levels = c("red",
"green", "blue")))
# 显示因子水平 (with extra levels)
df$x
#> [1] alpha beta alpha
#> Levels: alpha beta gamma
df$z
#> [1] red green green
#> Levels: red green blue
# 丢掉额外因子水平
df <- droplevels(df)
# 再次显示因子,现在没有额外的因子水平了
df$x
#> [1] alpha beta alpha
#> Levels: alpha beta
df$z
#> [1] red green green
#> Levels: red green
6.9.3 另见
想要重计算一个数据框中所有的因子变量列的因子水平,参见重计算数据框所有因子列的水平。