lubridate::floor_dateで任意の曜日スタートで切り下げ
タイトル通りのメモ。
library(tidyverse) library(lubridate) set.seed(12345) order_tbl <- tibble( order_date = seq(ymd("2019-03-01"), ymd("2019-03-31"), by = "1 day"), order_num = rpois(31, 5) )
日曜日と月曜日スタートする場合を追加します。
> order_tbl %>% + mutate(wd = weekdays(order_date), + sunday_start = floor_date(order_date, unit = "week"), + monday_start = floor_date(order_date, unit = "week", week_start = 1)) # A tibble: 31 x 5 order_date order_num wd sunday_start monday_start <date> <int> <chr> <date> <date> 1 2019-03-01 6 金曜日 2019-02-24 2019-02-25 2 2019-03-02 8 土曜日 2019-02-24 2019-02-25 3 2019-03-03 6 日曜日 2019-03-03 2019-02-25 4 2019-03-04 8 月曜日 2019-03-03 2019-03-04 5 2019-03-05 5 火曜日 2019-03-03 2019-03-04 6 2019-03-06 3 水曜日 2019-03-03 2019-03-04 7 2019-03-07 4 木曜日 2019-03-03 2019-03-04 8 2019-03-08 5 金曜日 2019-03-03 2019-03-04 9 2019-03-09 6 土曜日 2019-03-03 2019-03-04 10 2019-03-10 11 日曜日 2019-03-10 2019-03-04 # … with 21 more rows
つまり、week_start = 1
を指定すれば、月曜日スタートで切り下げられます。デフォルトでは、week_start = getOption("lubridate.week.start", 7)
が設定されていますので、日曜日スタートになります。
round_date
とcelling_date
を含むfloor_date
の実装場所は以下になります。
github.com