由于很多分析中,节假日往往是一个重要的时间变量,在网上搜索如何用R语言判定节假日,如给出一个日期以后,自动返回日期对应的状态值,是工作日?双休日?还是小长假?看到了美国的解决方案,但是中国貌似找不到,有可能是我太笨了。。。。笨人笨办法,所以写了个体力活的函数,给大家分享。
用法:
is.holiday201314(date)
弊端:
只能判别2013年,2014年;
每年得手动更新;[s:12]
目的:
请教大神们有没有高级解决方案,这个是在太原始了[s:11]
<br />
####节假日函数,年份函数####<br />
is.holiday201314<-function(x){<br />
is.weekend<-function(x){y<-weekdays(as.Date(x))<br />
ifelse(y %in% c("星期六","星期日"),"双休日","工作日" )}<br />
ifelse (x %in% c("2013-01-01","2013-01-02","2013-01-03",<br />
"2013-02-09","2013-02-10","2013-02-11","2013-02-12","2013-02-13","2013-02-14","2013-02-15",<br />
"2013-04-04","2013-04-05","2013-04-06",<br />
"2013-04-29","2013-04-30","2013-05-01",<br />
"2013-06-10","2013-06-11","2013-06-12",<br />
"2013-09-19","2013-09-20","2013-09-21",<br />
"2013-10-01","2013-10-02","2013-10-03","2013-10-04","2013-10-05","2013-10-06","2013-10-07",</p>
<p> "2014-01-01",<br />
"2014-01-31","2014-02-01","2014-02-02","2014-02-03","2014-02-04","2014-02-05","2014-02-06",<br />
"2014-04-05","2014-04-06","2014-04-07",<br />
"2014-05-01","2014-05-02","2014-05-03",<br />
"2014-06-02","2014-05-31","2014-06-01",<br />
"2014-09-08","2014-09-06","2014-09-07",<br />
"2014-10-01","2014-10-02","2014-10-03","2014-10-04","2014-10-05","2014-10-06","2014-10-07"<br />
),"小长假",ifelse (x %in% c("2013-01-05","2013-01-06",<br />
"2013-02-16","2013-02-17",<br />
"2013-04-07",<br />
"2013-04-27","2013-04-28",<br />
"2013-06-08","2013-06-09",<br />
"2013-09-22",<br />
"2013-09-29","2013-10-12",<br />
"2014-01-26","2014-02-08",<br />
"2014-04-07",<br />
"2014-05-04",<br />
"2014-09-28","2014-10-11"),"工作日",is.weekend(x)))<br />
</p>