Hi all, I have a dataset with multiple dates of admission per person (client_id). In the example below of one client in my dataset, lines 1, 2, & 3 overlap with consecutive dates. Additionally, lines 5 &6 overlap. I'm looking to limit the dataset further to collapse the consecutive dates. Obs ID admit client_id release admitcount 1 295815 13-Dec-22 4087673300 7-Jan-23 1 2 295936 7-Jan-23 4087673300 9-Jan-23 2 3 295950 9-Jan-23 4087673300 18-Jan-23 3 4 296219 21-Feb-23 4087673300 22-Feb-23 4 5 299130 26-Jun-23 4087673300 26-Jun-23 5 6 299132 26-Jun-23 4087673300 6-Jul-23 6 I tried using a do loop to sort through the consecutive dates and only keep the records that have actual admit dates. proc sort data=morethanone; by client_id ID; run;
data want;
set morethanone;
by client_id ID;
lag_enddate=lag(release);
if not first.client_id then do;
if admit-lag_enddate=0 then delete_flag=1;
end;
if delete_flag then delete;
format lag_enddate date7.;
run; ID admit client_id release admitcount lag_enddate delete_flag 295815 13-Dec-22 4087673300 7-Jan-23 1 13-Feb-23 . 296219 21-Feb-23 4087673300 22-Feb-23 4 18-Jan-23 . 299130 26-Jun-23 4087673300 26-Jun-23 5 22-Feb-23 . The program kept the records I wanted but I would like the lag_enddate to be the actual end date. What I want: ID admit client_id release admitcount lag_enddate delete_flag 295815 13-Dec-22 4087673300 7-Jan-23 1 18-Jan-23 . 296219 21-Feb-23 4087673300 22-Feb-23 4 22-Feb-23 . 299130 26-Jun-23 4087673300 26-Jun-23 5 6-Jul-23 . Please help! Tell me what I'm doing wrong.
... View more