使用字符分配/更改字符/因子级别

时间:2019-12-06 16:52:20

标签: r

我有一个数据框,然后选择一行以获得一行,但保持水平。我需要这一行在以后的模型中使用predict()。

我尝试通过将字符(?)分配给这样的因子级别来更改行的一个值:

df <- data.frame(some_amazing_column = c("yes", "no"))
levels(df$some_amazing_column)

row <- head(df, 1)
char <- "no"

head(row)
levels(row$some_amazing_column)
row$some_amazing_column = char
levels(row$some_amazing_column)

这会丢失因子水平。我是否正确更改值(因子水平)?在这种情况下,保持级别不变的正确方法是“是”到“否”。请不要因为分配的值是来自前端的字符。

PS:

接受的答案提示将产生以下工作代码:

df <- data.frame(some_amazing_column = c("yes", "no"))
levels(df$some_amazing_column)

row <- head(df, 1)
char <- "no"

head(row)
levels(row$some_amazing_column)
row$some_amazing_column <- factor(char, levels = levels(row$some_amazing_column))
head(row)
levels(row$some_amazing_column)

1 个答案:

答案 0 :(得分:1)

要更改级别,一种方法是使用与原始数据集中相同的factor将'char'转换为levels并分配

row$some_amazing_column <- factor(char, levels = levels(row$some_amazing_column))

levels(row$some_amazing_column)
#[1] "no"  "yes"

row
#  some_amazing_column
#1                  no