Wow, I ran your code Snoopy and loved the graphs – need to digest but thanks so much.
While you were doing that, I was working on coming up with my expected – not totally finished – need to exclude a few more working days – put it at the end.
In your code
do _i = 1 to 4; - is this where you assigned 4 participants for each valid date?
If I change do dt = '02JAN2020'd to '30NOV2020'd; to a later date (I’ve calculated that at the rate of 4 ppts/day, enrolled would be expected to be done by September 2021) will the expected line keep going while the actual will stop?
What does this mean? if weekday(dt) in (2:6) then do;
Many thanks to all for your help, I need to read ALL the answers carefully but realize the holiday is here and you will be off to better things.
Margaret
data target (keep=begin);
format begin date9.;
array holidays(10);
do date = '22OCT2019'd to '31OCT2021'd ;
if date eq intnx('year',date,0,'b') then do;
call missing(of holidays(*));
i=0;
end;
if date eq holiday('NEWYEAR', year(date)) or
date eq holiday('MLK',year(date)) or
date eq holiday('USPRESIDENTS',year(date)) or
date eq holiday('MEMORIAL', year(date)) or
date eq holiday('USINDEPENDENCE',year(date)) or
date eq holiday('LABOR',year(date)) or
date eq holiday('COLUMBUS',year(date)) or
date eq holiday('VETERANSUSG',year(date)) or
date eq holiday('THANKSGIVING', year(date)) or
date eq holiday('CHRISTMAS', year(date)) then do;
i+1;
holidays(i)=date;
end;
if not(date in holidays or weekday(date) in (1,7)) then do;
season=1;
begin=date;
output;
end;
end;
run;
data target2; *n=254 days;
set target;
if begin in('23DEC2019'd,'24DEC2019'd,'26DEC2019'd,'27DEC2019'd,'30DEC2019'd,'31DEC2019'd) then DELETE; *need to also add days to remove for 2020;
run;
options intervalds=(workdays=target2);
data expected;
days=intck('workdays','22OCT2019'd,'30SEP2021'd);
run;
... View more