更改因子中的级别名称时出错
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
我正在尝试重命名因子中的级别。我有一个级别 "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