【问题标题】:Generate a working day sequence in R在 R 中生成工作日序列
【发布时间】:2014-03-18 08:49:00
【问题描述】:

我想在 R 中生成一个工作周/工作日序列(周一至周五;上午 8 点至下午 5 点)。但是我只知道如何提取一个 24 小时的工作周(周一至周五)。

library(timeDate)
start <- as.POSIXct("2010-01-01")
interval <- 60
seq_1 <- as.timeDate(seq(from=start, by=interval*60, length.out = 200))

seq_2 <- seq_1[isWeekday(seq_1)]; seq_2
dayOfWeek(seq_2)

有没有类似的功能只能提取工作时间?谢谢

【问题讨论】:

  • 您希望从您的代码中获得什么?

标签: r time time-series sequence


【解决方案1】:

您可以使用函数格式获取小时数

seq_2[as.numeric(format(seq_2,'%H')) %in% 8:15 ]

【讨论】:

    【解决方案2】:

    选择工作日,然后以所需小时数重复。恐怕我错过了你的 8 点钟开始,并使用“9 到 5”这句话作为我的指南:

    twoyears <- seq.Date(as.Date("2010-01-01"), by='day', length.out=365*2)
    twoworkyrs <- twoyears[isWeekday(twoyears, wday = 1:5)]
    twoworkyrs[ 1:10]
    # [1] "2010-01-01" "2010-01-04" "2010-01-05" "2010-01-06" "2010-01-07" "2010-01-08"
    # [7] "2010-01-11" "2010-01-12" "2010-01-13" "2010-01-14"
    workhours <- as.POSIXct( as.numeric(rep(twoworkyrs, each=9))*24*3600 + # weekdays
                             (9:17)*3600 , n                            # working hours
            origin="1970-01-01", tz="America/LosAngeles")
    #----- First two weeks ----------------
    > workhours[1:90]
     [1] "2010-01-01 09:00:00 UTC" "2010-01-01 10:00:00 UTC" "2010-01-01 11:00:00 UTC"
     [4] "2010-01-01 12:00:00 UTC" "2010-01-01 13:00:00 UTC" "2010-01-01 14:00:00 UTC"
     [7] "2010-01-01 15:00:00 UTC" "2010-01-01 16:00:00 UTC" "2010-01-01 17:00:00 UTC"
    [10] "2010-01-04 09:00:00 UTC" "2010-01-04 10:00:00 UTC" "2010-01-04 11:00:00 UTC"
    [13] "2010-01-04 12:00:00 UTC" "2010-01-04 13:00:00 UTC" "2010-01-04 14:00:00 UTC"
    [16] "2010-01-04 15:00:00 UTC" "2010-01-04 16:00:00 UTC" "2010-01-04 17:00:00 UTC"
    [19] "2010-01-05 09:00:00 UTC" "2010-01-05 10:00:00 UTC" "2010-01-05 11:00:00 UTC"
    [22] "2010-01-05 12:00:00 UTC" "2010-01-05 13:00:00 UTC" "2010-01-05 14:00:00 UTC"
    [25] "2010-01-05 15:00:00 UTC" "2010-01-05 16:00:00 UTC" "2010-01-05 17:00:00 UTC"
    [snipped
    

    我必须承认时区转换是我最弱的一套。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-16
      • 1970-01-01
      • 1970-01-01
      • 2018-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多