Yes, I also use a different data step in addition to the first one. see below. Data CO_Hosp(where=(COpoisoning=1));
Set 'C:\Users\hjt09632\Documents\SAS Dataset 2022\complete22.sas7bdat';
array DXS[18] $ dx1-dx18;
COyes_step2a10 = 0;
COno_step2b10 = 0;
CO_fire10 = 0;
CO_nonfire_prelim10 = 0;
CO_unknown_prelim1_10 = 0;
do z= 1 to 18;
* sub-step A;
if substr(DXS {z},1,5) IN:('T5801', 'T5804', 'T5811', 'T5814', 'T5891', 'T5894') or
substr(DXS {z},1,6) IN: ('T582X1', 'T582X4', 'T588X1', 'T588X4')
then COyes_step2a10 = 1 ;
* sub-step B;
if substr(DXS {z}, 1,5)IN: ('T5802', 'T5803', 'T5812', 'T5813', 'T5892', 'T5893') or
substr(DXS {z},1,6) IN: ('T582X2', 'T582X3', 'T588X2', 'T588X3')
then COno_step2b10 = 1;
if COyes_step2a10 = 1 or 0 and COno_step2b10 NE 1 then COpoisoning = 1 ;
*differentiate causes: sub-steps C, D, E, F;
* sub-step c;
if substr(DXS {z}, 1,3)IN:('X00', 'X01', 'X02', 'X03', 'X04', 'X05', 'X06', 'X08')
then CO_fire10 = 1;
* sub-step d;
if substr(DXS {z},1,5) in ('T5801', 'T5811', 'T5891') or
substr(DXS {z},1,6) in ('T582X1', 'T588X1')
then CO_nonfire_prelim10 = 1;
if CO_fire10 NE 1 and CO_nonfire_prelim10 = 1 then CO_nonfire10 = 1;
* sub-step e;
if substr(DXS {z},1,5) IN: ('T5804', 'T5814', 'T5894') or
substr(DXS {z},1,6) IN: ('T582X4', 'T588X4')
then CO_unknown_prelim1_10 = 1;
END;
if CO_fire10 ~= 1 and CO_unknown_prelim1_10 = 1 then CO_unknown_prelim2_10 = 1;
if CO_fire10 = 1 and CO_nonfire10 = 1 then CO_unknown_prelim3_10 = 1;
if CO_unknown_prelim2_10 = 1 or CO_unknown_prelim3_10 = 1 then CO_unknown10 = 1;
* sub-step f;
if CO_fire10 = 1 then Cause = 1;*fire related ;
if CO_nonfire10 = 1 then Cause = 2;*not fire related;
if CO_unknown10 = 1 then Cause = 3;*Unknown mechanism or intent;
if CO_fire10 = 1 and CO_nonfire10 = 1 then Cause = 3;
if CO_fire10 = 1 and CO_unknown10 = 1 then Cause = 3;
if CO_nonfire10 = 1 and CO_unknown10 = 1 then Cause = 3;
HealthOutcomeID = 3; /*Step 6: Create according to data dictionary*/
MonthlyHosp = 0; /*Step 7: Create a variable called “MonthlyHosp” and set it to zero for all rows.*/
run;
proc sql ;
create table rr as
select distinct AdmissionMonth
,AgeGroup
, County
, Ethnicity
, Race
, HealthOutcomeID
, MonthlyHosp
, Sex
, YearAdmitted
, sum((Cause=1)) as IncidentCountFire
, sum((Cause=2)) as IncidentCountNonFire
, sum((Cause=3)) as IncidentCountUnknown
from count_CO
group by AdmissionMonth
, AgeGroup
, County
, Ethnicity
, Race
, HealthOutcomeID
, MonthlyHosp
, Sex
, YearAdmitted
;
quit;
data CO_Finalhosp;
RETAIN RowIdentifier AdmissionMonth AgeGroup County Ethnicity HealthOutcomeID
MonthlyHosp Race Sex YearAdmitted;
set rr;
RowIdentifier=_n_;
KEEP RowIdentifier AdmissionMonth AgeGroup County Ethnicity HealthOutcomeID
MonthlyHosp Race Sex YearAdmitted IncidentCountFire IncidentCountNonFire
IncidentCountUnknown ;
run;
... View more