"其他"变成" NA"

时间:2015-05-15 16:36:27

标签: r levels

我有一个data.frame(DL),其中一个列名是水果,它就像c(" apple","柠檬","橙&# 34;,"其他")所以我想更改此列的级别,以便图例的顺序(当我创建绘图时)将遵循我想要的顺序。这是我的代码

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

但是当我使用View(DL)查看此数据后,&#34;其他&#34;将改为&#34; NA&#34;。当我ggplot这个,它不会显示&#34;其他&#34;。有谁知道发生了什么以及如何解决它?感谢。

1 个答案:

答案 0 :(得分:2)

如果您的数据不是很干净,有时会发生这种情况 - 例如,如果输入值周围有额外的空格。

以下是一个例子:

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

现在,让我们删除空白:

newFruit <- gsub("^\\s+|\\s+$", "", fruit)
factor(newFruit, levels = unique(newFruit))
# [1] apple  lemon  orange others others
# Levels: apple lemon orange others

如果您想检查源数据并查找空格,有时使用printquote = TRUE会有所帮助:

print(fruit, quote = TRUE)
# [1] "apple"   "lemon"   "orange"  "others"  "others "

或者,grepl也可以使用:

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