Hi all, I have 36 (3 codes per month) enrollment type codes and wanted to generate flags per month to show if one person had a particular enrollment type. The array code I use as below is so long. Is there anyway to simplify/shorten it? /* Dummy data I have */ data have; infile datalines truncover dsd; input DummyID $ Enroll_TYPE_CD_01_01 Enroll_TYPE_CD_01_02 Enroll_TYPE_CD_01_03 Enroll_TYPE_CD_01_04 Enroll_TYPE_CD_01_05 Enroll_TYPE_CD_01_06 Enroll_TYPE_CD_01_07 Enroll_TYPE_CD_01_02 Enroll_TYPE_CD_01_09 Enroll_TYPE_CD_01_10 Enroll_TYPE_CD_01_11 Enroll_TYPE_CD_01_12 Enroll_TYPE_CD_02_01 Enroll_TYPE_CD_02_02 Enroll_TYPE_CD_02_03 Enroll_TYPE_CD_02_04 Enroll_TYPE_CD_02_05 Enroll_TYPE_CD_02_06 Enroll_TYPE_CD_02_07 Enroll_TYPE_CD_02_02 Enroll_TYPE_CD_02_09 Enroll_TYPE_CD_02_10 Enroll_TYPE_CD_02_11 Enroll_TYPE_CD_02_12 Enroll_TYPE_CD_03_01 Enroll_TYPE_CD_03_02 Enroll_TYPE_CD_03_03 Enroll_TYPE_CD_03_04 Enroll_TYPE_CD_03_05 Enroll_TYPE_CD_03_06 Enroll_TYPE_CD_03_07 Enroll_TYPE_CD_03_02 Enroll_TYPE_CD_03_09 Enroll_TYPE_CD_03_10 Enroll_TYPE_CD_03_11 Enroll_TYPE_CD_03_12 ; datalines; Person01,1,1,1,1,1,1,1,1,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,, Person02,1,1,1,1,1,1,2,1,1,1,1,1,,,,,,,3,,,,,,,,,,,,,,,,, Person03,2,2,2,2,2,2,2,2,2,2,2,2,,,,,,,,,,,,,,,,,,,,,,,, Person04,1,1,1,1,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,, Person05,1,1,1,1,1,1,1,1,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,, Person06,1,1,1,1,1,1,1,1,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,, Person07,1,1,1,1,1,1,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,, Person08,1,1,1,1,1,1,1,1,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,, Person09,1,1,1,1,1,1,1,1,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,, Person10,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,,,,,,,,,,,,,,,,,,,,, Person11,2,2,2,2,2,2,2,2,2,2,2,2,,,,,,,,,,,,,,,,,,,,,,,, Person12,,,,,,,2,2,2,2,2,2,,,,,,,,,,,,,,,,,,,,,,,, Person13,1,1,1,1,1,1,1,1,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,, Person14,1,1,1,1,1,1,1,1,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,, Person15,2,2,2,2,2,2,2,2,2,1,1,1,,,,,,,,,,,,,,,,,,,,,,,, Person16,1,1,1,1,1,1,2,2,2,1,1,1,,,,,,,1,,,,,,,,,,,,,,,,, Person17,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,,,,,,,,,,,, Person18,2,2,2,2,1,1,1,1,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,, Person19,3,3,,,,,3,,,,,,2,2,3,3,3,3,,,,,,,,,2,2,2,2,3,,,,, Person20,4,4,4,4,4,4,4,4,4,4,4,,,,,,,,,,,,,,,,,,,,,,,,, ; run; /* Code I use */ data have1; set have; array Enrl_tp_01 Enroll_TYPE_CD_01_01 Enroll_TYPE_CD_02_01 Enroll_TYPE_CD_03_01; array Enrl_tp_02 Enroll_TYPE_CD_01_02 Enroll_TYPE_CD_02_02 Enroll_TYPE_CD_03_02; array Enrl_tp_03 Enroll_TYPE_CD_01_03 Enroll_TYPE_CD_02_03 Enroll_TYPE_CD_03_03; array Enrl_tp_04 Enroll_TYPE_CD_01_04 Enroll_TYPE_CD_02_04 Enroll_TYPE_CD_03_04; array Enrl_tp_05 Enroll_TYPE_CD_01_05 Enroll_TYPE_CD_02_05 Enroll_TYPE_CD_03_05; array Enrl_tp_06 Enroll_TYPE_CD_01_06 Enroll_TYPE_CD_02_06 Enroll_TYPE_CD_03_06; array Enrl_tp_07 Enroll_TYPE_CD_01_07 Enroll_TYPE_CD_02_07 Enroll_TYPE_CD_03_07; array Enrl_tp_08 Enroll_TYPE_CD_01_08 Enroll_TYPE_CD_02_08 Enroll_TYPE_CD_03_08; array Enrl_tp_09 Enroll_TYPE_CD_01_09 Enroll_TYPE_CD_02_09 Enroll_TYPE_CD_03_09; array Enrl_tp_10 Enroll_TYPE_CD_01_10 Enroll_TYPE_CD_02_10 Enroll_TYPE_CD_03_10; array Enrl_tp_11 Enroll_TYPE_CD_01_11 Enroll_TYPE_CD_02_11 Enroll_TYPE_CD_03_11; array Enrl_tp_12 Enroll_TYPE_CD_01_12 Enroll_TYPE_CD_02_12 Enroll_TYPE_CD_03_12; array Grp_flg_01 flag_Enrlcat1_01_01 flag_Enrlcat1_02_01 flag_Enrlcat1_03_01; array Grp_flg_02 flag_Enrlcat1_01_02 flag_Enrlcat1_02_02 flag_Enrlcat1_03_02; array Grp_flg_03 flag_Enrlcat1_01_03 flag_Enrlcat1_02_03 flag_Enrlcat1_03_03; array Grp_flg_04 flag_Enrlcat1_01_04 flag_Enrlcat1_02_04 flag_Enrlcat1_03_04; array Grp_flg_05 flag_Enrlcat1_01_05 flag_Enrlcat1_02_05 flag_Enrlcat1_03_05; array Grp_flg_06 flag_Enrlcat1_01_06 flag_Enrlcat1_02_06 flag_Enrlcat1_03_06; array Grp_flg_07 flag_Enrlcat1_01_07 flag_Enrlcat1_02_07 flag_Enrlcat1_03_07; array Grp_flg_08 flag_Enrlcat1_01_08 flag_Enrlcat1_02_08 flag_Enrlcat1_03_08; array Grp_flg_09 flag_Enrlcat1_01_09 flag_Enrlcat1_02_09 flag_Enrlcat1_03_09; array Grp_flg_10 flag_Enrlcat1_01_10 flag_Enrlcat1_02_10 flag_Enrlcat1_03_10; array Grp_flg_11 flag_Enrlcat1_01_11 flag_Enrlcat1_02_11 flag_Enrlcat1_03_11; array Grp_flg_12 flag_Enrlcat1_01_12 flag_Enrlcat1_02_12 flag_Enrlcat1_03_12; do over Enrl_tp_01; if Enrl_tp_01=1 then Grp_flg_01=1; else Grp_flg_01=0; end; flag_Enrlcat1_201801=max(flag_Enrlcat1_01_01, flag_Enrlcat1_02_01, flag_Enrlcat1_03_01); do over Enrl_tp_02; if Enrl_tp_02=1 then Grp_flg_02=1; else Grp_flg_02=0; end; flag_Enrlcat1_201802=max(flag_Enrlcat1_01_02, flag_Enrlcat1_02_02, flag_Enrlcat1_03_02); do over Enrl_tp_03; if Enrl_tp_03=1 then Grp_flg_03=1; else Grp_flg_03=0; end; flag_Enrlcat1_201803=max(flag_Enrlcat1_01_03, flag_Enrlcat1_02_03, flag_Enrlcat1_03_03); do over Enrl_tp_04; if Enrl_tp_04=1 then Grp_flg_04=1; else Grp_flg_04=0; end; flag_Enrlcat1_201804=max(flag_Enrlcat1_01_04, flag_Enrlcat1_02_04, flag_Enrlcat1_03_04); do over Enrl_tp_05; if Enrl_tp_05=1 then Grp_flg_05=1; else Grp_flg_05=0; end; flag_Enrlcat1_201805=max(flag_Enrlcat1_01_05, flag_Enrlcat1_02_05, flag_Enrlcat1_03_05); do over Enrl_tp_06; if Enrl_tp_06=1 then Grp_flg_06=1; else Grp_flg_06=0; end; flag_Enrlcat1_201806=max(flag_Enrlcat1_01_06, flag_Enrlcat1_02_06, flag_Enrlcat1_03_06); do over Enrl_tp_07; if Enrl_tp_07=1 then Grp_flg_07=1; else Grp_flg_07=0; end; flag_Enrlcat1_201807=max(flag_Enrlcat1_01_07, flag_Enrlcat1_02_07, flag_Enrlcat1_03_07); do over Enrl_tp_08; if Enrl_tp_08=1 then Grp_flg_08=1; else Grp_flg_08=0; end; flag_Enrlcat1_201808=max(flag_Enrlcat1_01_08, flag_Enrlcat1_02_08, flag_Enrlcat1_03_08); do over Enrl_tp_09; if Enrl_tp_09=1 then Grp_flg_09=1; else Grp_flg_09=0; end; flag_Enrlcat1_201809=max(flag_Enrlcat1_01_09, flag_Enrlcat1_02_09, flag_Enrlcat1_03_09); do over Enrl_tp_10; if Enrl_tp_10=1 then Grp_flg_10=1; else Grp_flg_10=0; end; flag_Enrlcat1_201810=max(flag_Enrlcat1_01_10, flag_Enrlcat1_02_10, flag_Enrlcat1_03_10); do over Enrl_tp_11; if Enrl_tp_11=1 then Grp_flg_11=1; else Grp_flg_11=0; end; flag_Enrlcat1_201811=max(flag_Enrlcat1_01_11, flag_Enrlcat1_02_11, flag_Enrlcat1_03_11); do over Enrl_tp_12; if Enrl_tp_12=1 then Grp_flg_12=1; else Grp_flg_12=0; end; flag_Enrlcat1_201812=max(flag_Enrlcat1_01_12, flag_Enrlcat1_02_12, flag_Enrlcat1_03_12); run; /* Dummy data I want to generate */ proc sql; create table want as select distinct DummyID ,flag_Enrlcat1_201801 ,flag_Enrlcat1_201802 ,flag_Enrlcat1_201803 ,flag_Enrlcat1_201804 ,flag_Enrlcat1_201805 ,flag_Enrlcat1_201806 ,flag_Enrlcat1_201807 ,flag_Enrlcat1_201808 ,flag_Enrlcat1_201809 ,flag_Enrlcat1_201810 ,flag_Enrlcat1_201811 ,flag_Enrlcat1_201812 from have1 ;quit; Thank you!
... View more