Hi! I'm looking for help with this array. I want to check multiple variables (Secondarydiagnosis1-20, Procedure1-20, and ProcedureHCPCS_1-13) for a number starting with '493'. If it begins with '493' then new variable asthma=1. I submitted this code but it is taking a long time to process, so I'm sure there is an error! Help is appreciated!
data asthma2.asthma_only;
set asthma2.fyall_EXCL_F;
asthma=0;
array dx(*)secondarydiagnosis2-secondarydiagnosis20;
do i= 1 to dim(dx);
if dx(i) =: '493' then asthma=1;
array proc(*) procedure1-procedure20;
do i=1 to dim(proc);
if proc(i)=:'493' then asthma=1;
array HCPCS(*) ProcedureHCPCS_1-ProcedureHCPCS_13;
do i=1 to dim(HCPCS);
if hcpcs(i)=:'493' then asthma=1;
end;
end;
end;
run;
Yes, your DO loops should not be nested. Moving a few END statements would work:
data asthma2.asthma_only;
set asthma2.fyall_EXCL_F;
asthma=0;
array dx(*)secondarydiagnosis2-secondarydiagnosis20;
do i= 1 to dim(dx);
if dx(i) =: '493' then asthma=1;
end;
array proc(*) procedure1-procedure20;
if asthma=0 then do i=1 to dim(proc);
if proc(i)=:'493' then asthma=1;
end;
array HCPCS(*) ProcedureHCPCS_1-ProcedureHCPCS_13;
if asthma=0 then do i=1 to dim(HCPCS);
if hcpcs(i)=:'493' then asthma=1;
end;
run;
Yes, your DO loops should not be nested. Moving a few END statements would work:
data asthma2.asthma_only;
set asthma2.fyall_EXCL_F;
asthma=0;
array dx(*)secondarydiagnosis2-secondarydiagnosis20;
do i= 1 to dim(dx);
if dx(i) =: '493' then asthma=1;
end;
array proc(*) procedure1-procedure20;
if asthma=0 then do i=1 to dim(proc);
if proc(i)=:'493' then asthma=1;
end;
array HCPCS(*) ProcedureHCPCS_1-ProcedureHCPCS_13;
if asthma=0 then do i=1 to dim(HCPCS);
if hcpcs(i)=:'493' then asthma=1;
end;
run;
Good news: We've extended SAS Hackathon registration until Sept. 12, so you still have time to be part of our biggest event yet – our five-year anniversary!
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.
Ready to level-up your skills? Choose your own adventure.