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

时间:2018-04-18 19:05:56

标签: r dataframe levels

我正在尝试重新命名一个因素中的级别。我有一个级别“需要缩短的非常长的文本。”并希望将其名称更改为“Levelname”。但是,当我尝试:

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

Levelname级别继续存在时,会生成只有缺失值的级别Very long text...

我仍然可以使用

重命名关卡

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

但是当我重新运行代码时,如果级别数字以某种方式改变,则宁愿避免使用它。 (我不知道这是否真的会发生,但比抱歉更安全。)

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

2 个答案:

答案 0 :(得分:0)

问题在于级别没有命名,因此您无法以这种方式引用它们。如果您想要一种安全的方法来操纵因子水平,请查看forcats包(tidyverse的一部分)。它具有功能fct_recode,可以执行您想要的功能。

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

答案 1 :(得分:0)

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

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

输出:

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

级别更改为 medium

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

输出:

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