In a data set, each observation has a datetime variable "Trade_date_time", all before 22nd sept 2011.
I want to create a new variable called "time_left", which holds the number of days from each observation untill the 22nd sept 2011.
my code so far...
data my_data;
set my_data;
date=datepart(Trade_date_time);
exp_date= '22-SEP-2011'd;
time_left = exp_date-date;
run;
but of course this is not correct, as it includes weekend days as well,
how can I not include weekend days in my time_left variable.
EDIT: Ok, so now I am using
data my_data;
set my_data;
date=datepart(Trade_date_time);
exp_date= '22-SEP-2011'd;
weeks_left= week(exp_date)-week(date);
time_left = exp_date-date;
time_left_adj = exp_date-date-(2*weeks_left);
run;
which I think works.
INTCK will take care it automatically:
data my_data;
set my_data;
date=datepart(Trade_date_time);
exp_date= '22-SEP-2011'd;
/* weeks_left= week(exp_date)-week(date);*/
/* time_left = exp_date-date;*/
time_left_adj = intck('weekday',date,exp_date);
run;
Regards,
Haikuo
What about holidays?
You could do something like the following to double check but someone might have a more sleek answer using a custom interval and intck.
The following may also need to be adjusted by 1 depending on if you're including the boundary dates or not.
data my_data;
set my_data;
date=datepart(Trade_date_time);
exp_date= '22-SEP-2011'd;
weeks_left= week(exp_date)-week(date);
time_left = exp_date-date;
time_left_adj = exp_date-date-(2*weeks_left);
time_left_check=0;
do i=date to exp_date;
if weekday(i) not in (1, 7) then time_left_check+1;
end;
run;
See http://www.sascommunity.org/wiki/Generating_Holiday_Lists
Reeza wrote:
What about holidays?
You could do something like the following to double check but someone might have a more sleek answer using a custom interval and intck.
The following may also need to be adjusted by 1 depending on if you're including the boundary dates or not.
data my_data;
set my_data;
date=datepart(Trade_date_time);
exp_date= '22-SEP-2011'd;
weeks_left= week(exp_date)-week(date);
time_left = exp_date-date;
time_left_adj = exp_date-date-(2*weeks_left);
time_left_check=0;
do i=date to exp_date;
if weekday(i) not in (1, 7) then time_left_check+1;
end;
run;
INTCK will take care it automatically:
data my_data;
set my_data;
date=datepart(Trade_date_time);
exp_date= '22-SEP-2011'd;
/* weeks_left= week(exp_date)-week(date);*/
/* time_left = exp_date-date;*/
time_left_adj = intck('weekday',date,exp_date);
run;
Regards,
Haikuo
Join us for SAS Innovate April 16-19 at the Aria in Las Vegas. Bring the team and save big with our group pricing for a limited time only.
Pre-conference courses and tutorials are filling up fast and are always a sellout. Register today to reserve your seat.
Learn the difference between classical and Bayesian statistical approaches and see a few PROC examples to perform Bayesian analysis in this video.
Find more tutorials on the SAS Users YouTube channel.