2016-08-21 20 views
0

我想創建一個矢量,從最近的工作日日期開始,運行75天到平日前75天 - 我該怎麼做?假設我可以使用seq?我是R的新手。如何創建一個從「Today」到75天前的R日期的工作日矢量?

如果今天是星期天(例如21-08-2016),那麼順序應該從前一個星期五(19-08-2016)開始,然後回到工作日16年9月5日。例如,非常類似於Excel函數= WORKDAY(A1,-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" 
# ... 
+0

看起來下來的選民可以提供更好的答案。我非常好奇並且急於看到它。 – Psidom

+0

他們不喜歡我的回答 –

+0

@RichardTelford他正在試圖爲這個問題寫一個流或發電機,我們會拭目以待。 – Psidom

3

我們可以製作一系列日子,拒絕任何週末日子(注意 - 這取決於您的語言環境),然後將輸出修剪爲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] 
+0

如何扭轉這一點,所以最近的日期是序列中的第一個日期?試圖在rev()函數中包裝第二行,但這導致了糟糕的輸出。 – jmn8

+0

見編輯版本。 –

相關問題