Сортировка dbReadtable с использованием wday в R

#mysql #r #lubridate

#mysql #r #lubridate

Вопрос:

У меня есть dbReadtable, который я хочу отсортировать по дате недели. Моя таблица выглядит следующим образом:

 Id Date       Number
1  2020-11-01 1
2  2020-11-03 3
3  2020-11-02 4
4  2020-11-01 2
5  2020-11-02 4
6  2020-11-03 3
7  2020-11-06 7
8  2020-11-05 4
9  2020-11-08 2
 

Я хочу, чтобы результат выглядел примерно так:

 Day       Number
 
Sunday    5
Monday    8
Tuseday   6
Thursday  4
Friday    7
 

Для этого я хочу использовать $wday в библиотеке lubridate.

Мой код выглядит следующим образом:

 data <- dbReadTable(con, "observations")
 

Как мне это решить?

Ответ №1:

Используя data.table и lubridate и предполагая, что дата уже является датой (а не строкой).

 library(lubridate)
library(data.table)

data <- dbReadTable(con, "observations")

data[, by=.(Day=wday(Date, label=TRUE, abbr=FALSE, locale="C")), .(Number=sum(Number))]

#        Day Number
#1:   Sunday      5
#2:  Tuesday      6
#3:   Monday      8
#4:   Friday      7
#5: Thursday      4
 

Я добавил locale, чтобы возвращать английские имена для дней (я француз и получаю французские имена :-).