Hello Everybody!
I've got a data set and I'm trying to create a variable that will flag the last Encounter_Date for each patient for each fiscal month/fiscal year. They may have multiple encounters on the last Encounter_Date. I'm trying to replicate the results of this code:
proc sql;
create table bbb as select * from aaa
group by fy, fm, ppid
having encounter_date = max(encounter_date);
quit;
with something like this (I want to keep all records in aaa and flag the max(encounter_date)):
proc sort data = aaa;
by FY FM ppid encounter_date;
run;
data bbb;
set aaa;
by FY FM ppid;
if last.ppid then Max_Enc_Date = 1 ;
else Max_Enc_Date =0 ;
run;
Thanks,
Brian
To keep several observations, all with the same maximum date, sort in descending order:
proc sort data=aaa;
by fy fm ppid descending encounter_date;
run;
Then it is easy to select all those having the maximum:
data want;
set have;
by fy fm ppid;
if first.ppid then max_date = encounter_date;
retain max_date;
Max_Enc_Date = (encounter_date = max_date);
drop max_date;
run;
To keep several observations, all with the same maximum date, sort in descending order:
proc sort data=aaa;
by fy fm ppid descending encounter_date;
run;
Then it is easy to select all those having the maximum:
data want;
set have;
by fy fm ppid;
if first.ppid then max_date = encounter_date;
retain max_date;
Max_Enc_Date = (encounter_date = max_date);
drop max_date;
run;
That's Astounding!
Thank you!
Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 25. Read more here about why you should contribute and what is in it for you!
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.