在下面的图中,我想更改NA
以在x轴上显示“待处理”。我该如何实现?
该图的数据来自一个大表,并且在NA
列中包含mth_yr
值。我只想在构建图时更改标签,这样我就知道转换仅发生在图内(因此我不会忘记现在的6个月)。
library(tidyverse)
df <- data.frame(stringsAsFactors=FALSE,
mth_yr = c("Jul2018", "Aug2018", "Sep2018", "Oct2018", "Nov2018",
"Dec2018", NA),
output = c(5, 10, 15, 20, 25, 30, 35)
)
df %>%
ggplot(aes(x = factor(mth_yr, levels = c("Jul2018", "Aug2018", "Sep2018",
"Oct2018", "Nov2018","Dec2018")),
y = output)) +
geom_col() +
xlab("")
请帮助!
答案 0 :(得分:1)
答案 1 :(得分:1)
正如我在上面的评论中提到的那样,您可以使用forcats::fct_explicit_na
来将NA
级别替换为更具体的内容。
forcats::as_factor
将变量转换为具有水平出现顺序的因子 ,这意味着您不必担心拼写水平以覆盖任何字母顺序。然后创建“待处理”标签。
library(ggplot2)
library(dplyr)
library(forcats)
df <- data.frame(stringsAsFactors=FALSE,
mth_yr = c("Jul2018", "Aug2018", "Sep2018", "Oct2018", "Nov2018",
"Dec2018", NA),
output = c(5, 10, 15, 20, 25, 30, 35)
)
with_pending <- df %>%
mutate(mth_yr = as_factor(mth_yr) %>%
fct_explicit_na(na_level = "Pending"))
with_pending
#> mth_yr output
#> 1 Jul2018 5
#> 2 Aug2018 10
#> 3 Sep2018 15
#> 4 Oct2018 20
#> 5 Nov2018 25
#> 6 Dec2018 30
#> 7 Pending 35
ggplot(with_pending, aes(x = mth_yr, y = output)) +
geom_col() +
xlab("")
由reprex package(v0.2.1)于2019-03-25创建