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!
Available on demand!
Missed SAS Innovate Las Vegas? Watch all the action for free! View the keynotes, general sessions and 22 breakouts on demand.
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.