更改因子中的级别名称时出错

Errors when changing level names in a factor

我正在尝试重命名因子中的级别。我有一个级别 "Very long text that needs to be shortened.",想将其名称更改为 "Levelname"。但是,当我尝试时:

levels(df$varname) ["Very long text that needs to be shortened."] <- "Levelname"

所发生的只是生成了只有缺失值的级别 Levelname,而 Very long text... 级别继续存在。

我仍然可以使用

重命名关卡

levels(df$varname) [1] <- "Levelname

但是我宁愿避免它,以防我重新运行代码时级别数字以某种方式发生变化。 (我不知道这是否真的会发生,但安全总比后悔好。)

如何重命名关卡并确保更改了正确的关卡名称?

问题是关卡没有命名,所以你不能那样引用它们。如果您想要一种安全的方法来操纵因子水平,请查看 forcats 包(tidyverse 的一部分)。它具有 fct_recode 函数,它将执行您想要的操作。

library(forcats)
df$varname <- fct_recode(df$varname, Levelname = "Very long text that needs to be shortened")

试试这个代码(只是一个例子):

y <- gl(2, 4, 8)
levels(y) <- c("low", "high")
y

输出:

[1] low  low  low  low  high high high high
Levels: low high

级别更改为:

levels(y)[levels(y) == "low"] <- "medium"
y

输出:

[1] medium medium medium medium high   high   high   high  
Levels: medium high