如何从"今天"创建工作日矢量? 75天前在R?

时间:2016-08-21 14:57:09

标签: r date

我想创建一个从最近的工作日开始的向量,并在75个工作日前往75个工作日运行 - 我该怎么做?假设我可以使用seq?我非常喜欢R。

如果今天是星期天(例如21-08-2016),那么序列应该在前一个星期五(2016年8月19日)开始,然后回到工作日09-05-16。非常类似于Excel函数= WORKDAY(A1,-1),例如。

2 个答案:

答案 0 :(得分:3)

我们可以制作一系列天,拒绝任何周末(NB - 这将取决于您的语言环境),然后将输出修剪为75天。

s1 <- seq(Sys.Date()-120, Sys.Date(), by = "day")
s1 <- s1[!weekdays(s1) %in% c("Saturday", "Sunday")] 
s1[(length(s1)-74):length(s1)]

以另一个方向产生输出

n <- 75
s1 <- seq(Sys.Date(), Sys.Date() - (n * 7/5 + 3) , by = "-1 day")
s1 <- s1[!weekdays(s1) %in% c("Saturday", "Sunday")] 
s1[1:n]

答案 1 :(得分:1)

由于75天不是很大,可能是这样的:

library(chron)
library(lubridate)
n = 75
Filter(function(x) !is.weekend(x), seq.Date(today(), by = '-1 day', length.out = (n+2)*7/5))[1:n]

 # [1] "2016-08-19" "2016-08-18" "2016-08-17" "2016-08-16"
 # [5] "2016-08-15" "2016-08-12" "2016-08-11" "2016-08-10"
 # ...