OK. Hope this time could work.
data Table1;
infile cards expandtabs truncover;
input ID Var1 & $20. Var2_id Var2 : $20. Var3_id Var3 : $20. Var4_id Var4 & $20. ;
cards;
111 Prod 1 1 Printing 1 Small_1 2 duration
111 Prod 1 1 Printing 1 Small_2 23 support
111 Prod 1 1 Printing 1 Small_3 22 addlt time
111 Prod 1 1 Printing 2 Med_v 12 managers
111 Prod 1 1 Printing 2 Med_m 3 average # of
111 Prod 1 1 Printing 2 Med_k 5 properties
111 Prod 1 1 Printing 3 Larg_b1 15 strong
111 Prod 1 1 Printing 3 larg_b2 20 competitive
111 Prod 1 1 Printing 3 larg_b3 24 occurrence
111 Prod 1 1 Printing 4 Huge_c1 11 # of cyle
111 Prod 1 1 Printing 4 Huge_c2 13 tag
111 Prod 1 1 Printing 4 Huge_c3 25 Tools
;
run;
data Table2;
infile cards expandtabs truncover;
input Var2_id Var2 & $20. Var3_id Var3 : $20. Var4_id Var4 & $20.;
cards;
1 Printing 1 Small_1 2 duration
1 Printing 1 Small_2 23 support
1 Printing 1 Small_3 22 addlt time
1 Printing 2 Med_v 12 managers
1 Printing 2 Med_m 3 average # of
1 Printing 2 Med_k 5 properties
1 Printing 3 Larg_b1 15 strong
1 Printing 3 larg_b2 20 competitive
1 Printing 3 larg_b3 28 exam
1 Printing 4 Huge_c1 11 # of cyle
1 Printing 4 Huge_c2 13 tag
1 Printing 4 Huge_c3 25 Tools
;
run;
proc sort data=table1;by Var2_id Var2 Var3_id Var3 Var4_id Var4;run;
proc sort data=table2;by Var2_id Var2 Var3_id Var3 Var4_id Var4;run;
data want;
merge table1(in=ina) table2(in=inb );
by Var2_id Var2 Var3_id Var3 Var4_id Var4;
length flag $ 20;
if not ina then flag='missing';
if not inb then flag='invalid';
if ina and inb then flag='valid';
run;
Xia Keshan
... View more