Я хотел бы отформатировать свою переменную даты до %d %b %Y
(например, 05 мая 2020 г.). Однако после форматирования она становится символьной переменной, и сортировка переменной от самой ранней даты до самой поздней будет невозможна (например, 5 мая 2020 года сортируется до 26 апреля 2020 года).
Данные:
df <- structure(list(Date = structure(c(1588204800, 1587945600, 1588464000, 1588032000,
1588291200, 1588377600, 1588118400), class = c("POSIXct",
"POSIXt"), tzone = "UTC")), class = "data.frame", row.names = c(NA, -7L))
# > df
# Date
# 1 2020-04-30
# 2 2020-04-27
# 3 2020-05-03
# 4 2020-04-28
# 5 2020-05-01
# 6 2020-05-02
# 7 2020-04-29
Вот как это выглядит сортировка отформатированной переменной даты:
df %>%
mutate(Date = format(Date, "%d %b %Y")) %>%
arrange(Date)
# Date
# 1 01 May 2020
# 2 02 May 2020
# 3 03 May 2020
# 4 27 Apr 2020
# 5 28 Apr 2020
# 6 29 Apr 2020
# 7 30 Apr 2020
Итак, вот что я сделал, и это работает, но я хотел бы знать, действительно ли это правильно, или есть альтернативы для решения этой проблемы. так что я могу иметь прямой доступ к более читаемым форматам даты при создании моей информационной панели для моих пользователей.
Когда дело доходит до ggplot()
, даже после того, как вы сделаете arrange
и mutate
с format
, фасетные сюжеты всегда будут отображаться в отсортированном порядке символов. Пример ниже:
df %>%
arrange(Date) %>%
mutate(n = 1:n(),
Date = format(Date, "%d %b %Y")) %>%
ggplot() +
geom_bar(aes(x = n)) +
facet_wrap(~Date)