简体   繁体   English

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

[英]assign/change character/factor level using characters

I have a dataframe and select one row to obtain one row but maintain the levels.我有一个数据框并选择一行以获得一行但保持级别。 I need this row to use predict() with a model later one.我需要这一行来将 predict() 与稍后的模型一起使用。

I try to change one value of the row by assigning a characters (?) to a factor level like this:我尝试通过将字符 (?) 分配给这样的因子级别来更改行的一个值:

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)

This loses the factor levels.这将失去因子水平。 Am I changing the value (factor level) correctly?我是否正确更改了值(因子水平)? What is the right way to change, in this case, yes to no whilst maintaining the levels.在这种情况下,在保持水平的同时改变是对否的正确方法是什么。 please not that the assigned value is a character coming from a front-end.请注意,分配的值是来自前端的字符。

PS: PS:

The accepted answer's hint results in this working code:接受的答案的提示导致此工作代码:

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)

To change the level, one way is to convert the 'char' to factor with same levels as in the original dataset and assign要更改级别,一种方法是将“字符”转换为与原始数据集中levels相同的factor并分配

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM