- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
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
Accepted Solutions
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
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;
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
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;
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
That's Astounding!
Thank you!