我有一个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;。有谁知道发生了什么以及如何解决它?感谢。
答案 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
如果您想检查源数据并查找空格,有时使用print
和quote = TRUE
会有所帮助:
print(fruit, quote = TRUE)
# [1] "apple" "lemon" "orange" "others" "others "
或者,grepl
也可以使用:
grepl("^\\s+|\\s+$", fruit)
# [1] FALSE FALSE FALSE FALSE TRUE