首页 > 解决方案 > 为绘图目的获取自定义日期格式时出现问题

问题描述

我想使用 ggplot 绘制几年的时间序列,x 轴上的日期格式为“MMM YYYY”,并按时间顺序排序。

迄今为止,我已经将所需的日期提取到一个字符变量中,但是当将月份/年份绘制为按字母顺序而不是按时间顺序排序时 - 我理解为什么会这样。因此,我尝试将变量强制为一个日期(格式为 MMM YYYY),并尝试了 as.Date 格式的所有可能排列,但无济于事。我正在使用的代码是...

df <- data.frame(c("16:45 11-Nov-17", "22:30 11-Jul-18", "01:24 30-Dec-18", "12:41 12-Jan-19", "13:13 11-Feb-19", "15:22 05-May-19"))
                 names(df) <- c("TDate")

Data <- mutate(df, Date = parse_date_time(df$TDate, "HM:dmy"),
                   MthY = as.Date(paste0(month(ymd_hms(Date), label = TRUE), " ", year(ymd_hms(Date))), format = "%b %Y"))

该代码不会生成任何错误消息,但无法呈现月/年 (MthY)

-# 小标题:-6 x 3 TDate 日期 MthY

1 16:45 11-Nov-17 2017-11-11 16:45:00 NA
2 22:30 11-Jul-18 2018-07-11 22:30: 00 不适用
3 01:24 30-Dec-18 2018-12-30 01:24:00 不适用
4 12:41 12-Jan-19 2019-01-12 12:41:00 不适用
5 13:13 11-2 月- 19 2019-02-11 13:13:00 不适用
6 15:22 05-May-19 2019-05-05 15:22:00 不适用

有没有人对此有任何想法?

标签: rdatetime

解决方案


如果格式不存在,我们可以使用anytime并添加格式 ( )addFormatsgetFormats

library(anytime)
library(dplyr)
addFormats("%H:%M %d-%b-%y")
df %>%
    mutate(MthY = format(anytime(TDate), "%b %Y"))
#           TDate     MthY
#1 16:45 11-Nov-17 Nov 2017
#2 22:30 11-Jul-18 Jul 2018
#3 01:24 30-Dec-18 Dec 2018
#4 12:41 12-Jan-19 Jan 2019
#5 13:13 11-Feb-19 Feb 2019
#6 15:22 05-May-19 May 2019

推荐阅读