我将使用以下代码:
我正在使用以下代码:
dates<-seq(as.Date("1991/1/4"),as.Date("2010/3/1"),"days")
然而,我只想保留工作日,如何实现?(假设1991年1月4日是星期一,我想排除:1991年6月4日和1991年7月4日。对于每个星期同样适用。)
感谢你的帮助。
这个方案对你有用吗?(注意,需要安装timeDate包)
# install.packages('timeDate')
require(timeDate)
# A ’timeDate’ Sequence
tS <- timeSequence(as.Date("1991/1/4"), as.Date("2010/3/1"))
tS
# Subset weekdays
tW <- tS[isWeekday(tS)]; tW
dayOfWeek(tW)
X <- seq( as.Date("1991/1/4", format="%Y/%m/%d"), as.Date("2010/3/1", format="%Y/%m/%d"),"days")
weekdays.X <- X[ ! weekdays(X) %in% c("Saturday", "Sunday") ]
# negation easier since only two cases in exclusion
# probably do not want to print that vector to screen.
str(weekdays.X)
关于你的评论,我无法复现。我得到了:
> table(weekdays(weekdays.X) )
Friday Monday Thursday Tuesday Wednesday
1000 1000 999 999 999
我在查找工作日函数时遇到了这个问题,由于楼主要求“工作日”而不是“工作日”,并且timeDate
还具有isBizday
函数,因此本答案使用了它。
# A timeDate Sequence
date.sequence <- timeSequence(as.Date("1991-12-15"), as.Date("1992-01-15")); # a short example period with three London holidays
date.sequence;
# holidays in the period
years.included <- unique( as.integer( format( x=date.sequence, format="%Y" ) ) );
holidays <- holidayLONDON(years.included) # (locale was not specified by OP in question nor in profile, so this assumes for example: holidayLONDON; also supported by timeDate are: holidayNERC, holidayNYSE, holidayTSX & holidayZURICH)
# Subset business days
business.days <- date.sequence[isBizday(date.sequence, holidays)];
business.days
weekdays
。 - joran