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;
Registration is now open for SAS Innovate 2025 , our biggest and most exciting global event of the year! Join us in Orlando, FL, May 6-9.
Sign up by Dec. 31 to get the 2024 rate of just $495.
Register now!
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.