ggplot排序顺序处理NA值

3

我的目标是创建一个服务请求散点图。
横坐标将显示请求日期。
X值从左到右按最老到最新的顺序显示。
纵坐标将显示请求的优先级。
我希望将Y值从最高优先级(即1)排序到最低。
未设置优先级的请求在该列中为NA。

以下是一个示例数据集(注意-原始数据文件是制表符分隔的,因为下面的“NA”位置没有值,仅供清楚起见):

ID  Priority    DateCreated  
549 NA  2018-02-15  
548 NA  2018-02-15  
547 3   2018-02-13  
537 1   2018-01-17  
536 5   2018-01-17  
518 NA  2017-12-21  
509 3   2017-11-27  
500 2   2017-11-16  
486 NA  2017-10-04  
477 3   2017-08-08  
475 1   2017-09-14  
448 2   2017-07-21  
444 5   2017-07-14  
431 5   2017-06-30  
425 1   2017-06-21  
407 2   2017-05-26  
395 4   2017-05-09  
394 4   2017-05-09  
374 4   2017-04-27  
368 2   2017-04-21  
352 NA  2017-04-03  
328 4   2017-02-28  
308 NA  2017-02-28  
272 2   2016-10-05  
213 4   2016-05-19  
212 5   2016-05-19  
200 2   2016-04-26  
188 NA  2016-03-17  

在加载ggplot2和data.frame之后,我使用以下代码创建图形:
bl <- fread("backlog.txt")  
bl$DateCreated <- as.Date(bl$DateCreated, "%Y-%m-%d")  
bl$Priority <- as.integer(bl$Priority)  
ggplot(bl, aes(x = DateCreated, y = reorder(Priority, -Priority))) +  
 geom_text((aes(label = ID)))

如果您复制此图,您会发现优先级为NA的项目出现在顶部。为了向客户展示更清晰,我希望它们出现在底部。
我想我可以用“魔数”(例如11)替换NA,但我更喜欢不那么笨拙的解决方案。
有人已经处理过类似的问题吗?
谢谢。
1个回答

3

这也是一种折中的方法,但我认为比设定一个“魔数”更可接受

bl$DateCreated <- as.Date(bl$DateCreated, "%Y-%m-%d") 
bl$Priority[is.na(bl$Priority)] <- "No Data Available"
bl$Priority <- factor(bl$Priority,levels=c("No Data Available","1","2","3","4","5"))
ggplot(bl, aes(x = DateCreated, y = Priority)) +  geom_text((aes(label = ID)))

enter image description here


谢谢您的关注!如果没有人提出更好的解决方案,您的方案看起来不错,比我面临的“魔数”修补要好得多。 - Charles Knell

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接