我正在尝试使用timeDate
软件包中的一系列函数编写一个小函数,以找出每个月的最后一个星期五(至少还剩两个工作日)。
获得第四个星期五很容易:
> timeNthNdayInMonth("2014-11-01",nday=5,nth=4)
GMT
[1] [2014-11-28]
但是,对于11月,我希望它返回,2014-11-21
因为11月28日之后没有其他工作日了。我想我需要某种ifelse
确定参数nth
应该相等的东西。
一旦计算了月份的最后一天,这将非常简单,因为如果星期二增加1,则减去4天就可以了,如果是星期一,则可以减去10天。您可以使用模块化算法进行计算。
freakyFriday <- function(year,month){
lastDay <- as.Date(paste(year+ifelse(month==12,1,0),(month%%12)+1,1,sep="-"))-1
dayNo <- as.integer(strftime(lastDay,"%w"))
lastDay - ((dayNo-2)%%7+4)
}
freakyFriday(2014,7)
[1] "2014-07-25"
freakyFriday(2014,11)
[1] "2014-11-21"
freakyFriday(2014,1:12)
[1] "2014-01-24" "2014-02-21" "2014-03-21" "2014-04-25" "2014-05-23"
[6] "2014-06-20" "2014-07-25" "2014-08-22" "2014-09-26" "2014-10-24"
[11] "2014-11-21" "2014-12-26"
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句