Hi all-
I have the following dataset:
patient ID quarter CHF (and so on...there are ~23 more column variables then- all binary 0/1, with 1=yes the person has the condition)
3 14 0
3 16 0
3 20 1
3 23 0
...and so on
I want each patient to show 36 quarters (so 1-36) regardless of if they have the condition or not. Right now, the quarters that are showing up are only the ones that people have a "yes" for the condition in.
Does anytone know how I would add in the quarters that are missing. It is different w/ each patient.
Thanks!
Something like:
data temp;
set have;
by PatientId notsorted; /* if data is sorted by PatientId don't need the notsorted but assumes all the records for PatientId are together*/
if first.PatientId then do quarter = 1 to 36;
output;
end;
run;
proc sql;
create table want as
select a.*, b.*
from temp as a left join have as b on
a.PatientId = b.PatientId;
quit;
You'll get a warning about PatientId and quarter being in both tables but b.* is shorter than listing all the variables in Have except PatientId and quarter.
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.