【问题标题】:Extract number of working days from date in R从R中的日期提取工作日数
【发布时间】:2021-04-14 11:19:45
【问题描述】:

有没有办法使用 R 中的 Date 变量来提取工作日/工作日(在英国)的数量?示例:

Date Working days
Mar-21 23
Apr-21 20

【问题讨论】:

    标签: r date lubridate


    【解决方案1】:
    workingdays <- function(date,
                            wdays = c("Monday", "Tuesday", "Wednesday", "Thursday", "Friday"),
                            holidays = as.Date(c())) {
      day1 <- as.POSIXlt(date)
      day1$mday <- 1
      dayn <- day1
      dayn$mon <- dayn$mon + 1
      dayn$mday <- dayn$mday - 1
      day1 <- as.Date(day1)
      dayn <- as.Date(dayn)
      mapply(function(fm, to) {
        alldays <- seq(fm, to, by = "day")
        alldays <- alldays[!alldays %in% holidays]
        sum(weekdays(alldays) %in% wdays)
      }, day1, dayn)
    }
    
    workingdays(as.Date(paste("01", x$Date), format="%d %b-%y"))
    # [1] 23 22
    
    workingdays(as.Date(paste("01", x$Date), format="%d %b-%y"), 
                holidays = as.Date("2021-04-05"))
    # [1] 23 21
    

    选择您喜欢的工作日/工作日。

    因此,您需要以某种方式找到要包含在 holidays= 参数中的假期列表。

    【讨论】:

    • 尝试使用给定的代码行创建一个新变量,但出现错误。 clean_file % mutate(Days_Count = weekdays(do.call(seq.Date, c(as.list(as.Date(paste("2021", raw_file$Date), format = "%Y %b- %d")), by = "day")))))
    • 我想我误解了......你想确定从每个日期到今天的工作日数吗?
    • 那么,如果可能的话,对于 2021 年的每个月,我想在下一列显示工作日数?
    • 您的日期列不明确,需要明确。是Mar-21March of the year 2021 一样吗? Y2K 是一个非常好的问题。
    • 是的,2021 年 3 月。在 R 中,它显示为“2021-03-01”,所以这可能是问题所在?有没有办法解决这个问题,必须使用开始日期和结束日期?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-20
    • 2021-03-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-25
    • 2021-12-09
    • 1970-01-01
    相关资源
    最近更新 更多