我试图从今天起计算n个工作日以获得具体日期。
我希望获得一个用户输入,其中包含向后计数的日期,让系统计算该日期。
让我们说我想从今天开始倒数100(工作日)。
A <- readline(prompt = "How many days backwards do you want to count? ")
#user input: 100
Date to be calculated <- Today date-A (format yyyy/mm/dd)
#Date to be calculated = 2018-03-02
然后我会使用日期来获取该日期存储的数据集的某些值。
任何评论都将受到高度赞赏
答案 0 :(得分:0)
一个选项是写一个递归函数来减去工作日。 chron::is.weekend
函数可用于确定某一天是working-day
。决定weekend/working-day
的其他选项可以基于@Ryan建议的S
开头的日期。
library(chron)
substractWorkingDays <- function(x, n){
v <- seq(x, x -n, by="-1 day")
workingDays <- sum(!is.weekend(v[-1])) #One can check day name start with `S`
if(workingDays == n){
return(v[length(v)])
}else{
substractWorkingDays(v[length(v)], n-workingDays)
}
}
#Testing it
substractWorkingDays(as.Date("2018-06-10"), 5)
#[1] "2018-06-04"
substractWorkingDays(as.Date("2018-06-10"), 10)
#[1] "2018-05-28"
substractWorkingDays(as.Date("2018-06-10"), 12)
#[1] "2018-05-24"