我有一个日期为2012 - 2021的数据框架。日期只是商务日期。所以没有周末。我需要一个列,其中包含每个月每个业务日期的数字。
试试这个…
library(tidyverse)
library(clock)
tibble(date = date_seq(as.Date("2022-01-01"), by = duration_days(1), total_size = 365)) |>
mutate(
wkday = date_weekday_factor(date),
date = as_year_month_day(date),
month = calendar_group(date, "month")
) |>
filter(!wkday %in% c("Sat", "Sun")) |>
group_by(month) |>
mutate(bus_day = row_number())
#> # A tibble: 260 × 4
#> # Groups: month [12]
#> date wkday month bus_day
#> <ymd<day>> <ord> <ymd<month>> <int>
#> 1 2022-01-03 Mon 2022-01 1
#> 2 2022-01-04 Tue 2022-01 2
#> 3 2022-01-05 Wed 2022-01 3
#> 4 2022-01-06 Thu 2022-01 4
#> 5 2022-01-07 Fri 2022-01 5
#> 6 2022-01-10 Mon 2022-01 6
#> 7 2022-01-11 Tue 2022-01 7
#> 8 2022-01-12 Wed 2022-01 8
#> 9 2022-01-13 Thu 2022-01 9
#> 10 2022-01-14 Fri 2022-01 10
#> # … with 250 more rows
由reprex包(v2.0.1)于2022-04-28创建
根据你如何描述你的问题,你只需要一周中的天数,因为你提到你的数据不包括工作日以外的任何东西。
您可以使用库润滑油,例如
lubridate::wday("2022-04-24", week_start = 1L) # sunday will be 7
# [1] 7
lubridate::wday("2022-04-24") # sunday will be 1
# [1] 1