R Lubridate упорядочивает месяцы и будни по алфавиту по умолчанию - PullRequest
0 голосов
/ 26 ноября 2018

Я использую Lubridate в R Studio, и когда я использую group by (с dplyr) для группировки по месяцам или будним дням, она автоматически сортируется в алфавитном порядке.Как я могу изменить это в порядке даты?

Вот код:

df %>% group_by(months(DateColumn)) %>% summarise(Freq=n())

DateColumn имеет следующую структуру:

enter image description here

Когда я вижу результат, это порядок.(То же самое для участков)

enter image description here

Ответы [ 2 ]

0 голосов
/ 27 ноября 2018

Использование данных из ответа @ akrun.Вот альтернатива:

 df <- data.frame(DateColumn = seq(as.POSIXct("2015-05-10"), 
                                  length.out = 30, by = '1 month'))
df %>% 
  mutate(Date=month(DateColumn,label=T),ID=row_number()) %>%
  group_by(Date) %>% 
  arrange(Date) %>% 
  select(-DateColumn)
0 голосов
/ 26 ноября 2018

После шага summarise мы можем arrange строк, используя match со встроенными month.name (месяцы в правильном порядке), а затем преобразовать «Месяцы» в factor с помощью *Указано 1006 * (чтобы его можно было использовать позже в ggplot для заказа в том же порядке, что и levels)

library(tidyverse)
df %>%
  group_by(Months = months(DateColumn)) %>% 
  summarise(n = n()) %>%
  arrange(match(month.name, Months)) %>%
  mutate(Months = factor(Months, levels = Months))

data

df <- data.frame(DateColumn = seq(as.POSIXct("2015-05-10"), 
     length.out = 30, by = '1 month'))
...