R &引用;其他";变成;不适用;

R &引用;其他";变成;不适用;,r,levels,R,Levels,我有一个data.frame(DL),其中一个列名是fruit,它类似于c(“苹果”、“柠檬”、“橙色”、“其他”),因此我想更改此列的级别,以便图例的顺序(创建绘图时)将遵循我想要的顺序。这是我的密码 DL$fruit <- factor(DL$fruit, levels=c("lemon", "apple", "orange", "others")) DL$fruit如果数据不太干净,有时会发生这种情况——例如,如果输入值周围有额外的空格 下面是一个例子: fruit <-

我有一个data.frame(DL),其中一个列名是fruit,它类似于c(“苹果”、“柠檬”、“橙色”、“其他”),因此我想更改此列的级别,以便图例的顺序(创建绘图时)将遵循我想要的顺序。这是我的密码

DL$fruit <- factor(DL$fruit, levels=c("lemon", "apple",  "orange", "others"))

DL$fruit如果数据不太干净,有时会发生这种情况——例如,如果输入值周围有额外的空格

下面是一个例子:

fruit <- c("apple", "lemon", "orange", "others", "others ") ## note the last two values
factor(fruit, levels=c("lemon", "apple",  "orange", "others"))
# [1] apple  lemon  orange others <NA>  
# Levels: lemon apple orange others
或者,
grepl
也可以使用:

grepl("^\\s+|\\s+$", fruit)
# [1] FALSE FALSE FALSE FALSE  TRUE

您的
DL$fruit
列中是否有多余的空格?@AnandaMahto您是对的!当我从“他人”改为“他人”时,它起作用了。谢谢。@kelvinfrog,好的。我添加了它作为答案。我总是使用
名称(表(var))
来检查隐藏的空白(特别是当它有时出现,但其他时候没有出现时)
print(fruit, quote = TRUE)
# [1] "apple"   "lemon"   "orange"  "others"  "others "
grepl("^\\s+|\\s+$", fruit)
# [1] FALSE FALSE FALSE FALSE  TRUE