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!
Don't miss out on SAS Innovate - Register now for the FREE Livestream!
Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.
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.