data s1 ;
input id $ start_date:date9. end_date:date9. ;
format start_date end_date date9. ;
cards ;
101 23sep2018 24sep2018
101 25sep2018 27sep2018
101 . 30sep2018
101 02oct2018 04oct2018
101 . 08sep2018
;
Q1)in above dataset start_date has some missing values then how to assign previous values of end_date variable?
id | start_date | end_date |
101 | 23SEP2018 | 24SEP2018 |
101 | 25SEP2018 | 27SEP2018 |
101 | 27SEP2018 | 30SEP2018 |
101 | 02OCT2018 | 04OCT2018 |
101 | 04OCT2018 | 08SEP2018 |
Q2)in above dataset start_date has some missing values then how to assign previous values of end_date variable and add one day see below dataset?
id | start_date | end_date |
101 | 23SEP2018 | 24SEP2018 |
101 | 25SEP2018 | 27SEP2018 |
101 | 28SEP2018 | 30SEP2018 |
101 | 02OCT2018 | 04OCT2018 |
101 | 05OCT2018 | 08SEP2018 |
SAS dates are counts of days, so simple additions and subtractions will do it.
data want;
set have;
by id;
prior_end = lag(end_date);
if start_date = . and first.id = 0 then do;
* For Q1;
start_date = prior_end;
* For Q2;
start_date = prior_end + 1;
end;
drop prior_end;
run;
Good news: We've extended SAS Hackathon registration until Sept. 12, so you still have time to be part of our biggest event yet – our five-year anniversary!
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.