Проблема получения пользовательского формата даты для построения графиков - PullRequest
0 голосов
/ 15 мая 2019

Я хочу использовать ggplot для построения временных рядов за несколько лет с датой в формате «МММ ГГГГ» на оси х и отсортированной в хронологическом порядке.

На сегодняшний день я выделил требуемые даты в символьную переменную, но когда я строил графики месяцев / лет в алфавитном, а не в хронологическом порядке - я понимаю, почему это так. Поэтому я попытался привести переменную к дате (в формате МММ ГГГГ) и попробовал каждую возможную перестановку форматирования 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 х 3 TD дата MthY

1 16:45 11-Nov-17 2017-11-11 16:45:00 NA
2 22:30 11 июля-18 2018-07-11 22:30:00 NA
3 01:24 30-дек-18 2018-12-30 01:24:00 NA
4 12:41 12 января-19 2019-01-12 12:41:00 NA
5 13:13 11-Feb-19 2019-02-11 13:13:00 NA
6 15:22 05 мая-19 2019-05-05 15:22:00 NA

У кого-нибудь есть мысли по этому поводу?

Ответы [ 2 ]

1 голос
/ 15 мая 2019

Мы можем использовать anytime и добавить формат (addFormats), если формат еще не существует с getFormats

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
1 голос
/ 15 мая 2019

Если вы получили форматы в ?strptime, вы можете легко конвертировать

format(as.POSIXct(df$TDate, format = "%H:%M %d-%b-%y"), "%b %Y")
#[1] "Nov 2017" "Jul 2018" "Dec 2018" "Jan 2019" "Feb 2019" "May 2019"

Чтобы добавить его в цепочку dplyr

library(dplyr)

df %>%
  mutate(MthY = format(as.POSIXct(TDate, format = "%H:%M %d-%b-%y"), "%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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...