Calculate start and end values:
data long;
set have;
start = year(admission);
if month(admission) lt 7 then start = start - 1;
end = coalesce(discharge,today());
if month(end) lt 7
then end = year(end) - 1;
else end = year(end);
do year = start to end;
output;
end;
keep patient_id year;
run;
Oh, a time traveler!
For example, 200 patients were active in 2020 and 400 patients in 2122.
Joking aside, what about this:
data long;
set have;
do year = year(admission) to year(coalesce(discharge,today());
output;
end;
keep patient_id year;
run;
/* next step is necessary if you want to count patients instead of stays */
proc sort data=long nodupkey;
by patient_id year;
run;
proc freq data=long;
tables year;
run;
Calculate start and end values:
data long;
set have;
start = year(admission);
if month(admission) lt 7 then start = start - 1;
end = coalesce(discharge,today());
if month(end) lt 7
then end = year(end) - 1;
else end = year(end);
do year = start to end;
output;
end;
keep patient_id year;
run;
SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!
Learn the difference between classical and Bayesian statistical approaches and see a few PROC examples to perform Bayesian analysis in this video.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.