您可以定义自己的间隔类型以与 SAS 函数 intck 和 intnx 一起使用。操作方法如下:
首先为您有假期的年份创建一个工作日表,直到现在(或未来)年份。
在这里,我们将首先包括从 2014 年到 2016 年的所有工作日。这是假设您不想计算周末天数。如果不是这种情况,只需修改代码,以便不应用条件“weekday(date) in (2:6)”。您将获得一年中的 365 天。
data mon_fri;
do date = "01JAN2014"d to "31DEC2016"d;
if weekday(date) in (2:6) then output;
end;
format date date9.;
run;
然后我们将创建一个表格,其中包含我们刚刚创建的所有日期,减去我们在假期表中的假期。我们将把表放在名为 myLib 的库中,并将日期列重命名为“开始”以符合 SAS 自定义间隔。
libname myLib "some/place/on/your/drive";
data mylib.workdays(RENAME=(date=Begin));
merge mon_fri (in=weekday)
Holidays (in=holiday);
by date;
if weekday and not holiday then output;
run;
现在我们设置一个自定义间隔,我们将其简称为“工作日”。
options intervalds=(workdays=mylib.workdays);
从那里,你剩下要做的就是这样:
data dateCalculations;
set mydata;
numOfDays = intck("workdays", theDate, today());
run;
SAS 将负责计算将开始日期(称为 theDate 的列)与结束日期(今天的日期)分开的日期(工作日数据集中的行)数。
等等!