How about a HASH TABLE? DATA MASTER; INFILE DATALINES DLM=","; INPUT ID $ ZIP1 COUNTY1 ZIP2 COUNTY2 ZIP3 COUNTY3; DATALINES; ER001,30345,145,36751,.,39768,165 ER002,30546,162,37654,.,38765,177 ER003,30357,176,39768,165,35505,154 ER004,30345,.,38765,177,35674,122 ER005,30578,189,35505,154,35555,134 ER006,39820,089,35674,122,34545,59 ER007,39145,121,35555,134,36751, ER008,36102,063,34545,059,35654, ER009,36102,063,34545,059,35654, ; RUN; DATA TRANSACTION; INFILE DATALINES DLM="," MISSOVER; INPUT ZIP COUNTY; DATALINES; 30345,244 36751,255 37654,233 30345,145 30546,162 30357,176 30578,189 39820,089 39145,121 36102,063 39768,165 38765,177 35505,154 35674,122 35555,134 34545,059 35654,192 ; RUN; DATA WANT; IF 0 THEN SET TRANSACTION;; IF _N_ = 1 THEN DO; DECLARE HASH H(DATASET:"TRANSACTION"); H.DEFINEKEY("ZIP"); H.DEFINEDATA("ZIP","COUNTY"); H.DEFINEDONE(); END; DO UNTIL (EOF); SET MASTER END=EOF; ARRAY _COUNTY {*} COUNTY1-COUNTY3; ARRAY _ZIP {*} ZIP1-ZIP3; DO I = 1 TO 3; IF _COUNTY{I} = . THEN DO; RC = H.FIND(KEY:_ZIP{I}); _COUNTY{I} = COUNTY; END; END; OUTPUT; END; RUN;
... View more