mingfeng07 发表于 2014-7-25 17:10 
One sql will be sufficient.
data a;
input firm $ day size bm;
cards;
A 26 165 0.97
B 120 549 1.35
C 45 236 0.65
;
run;
data b;
input firm $ day size bm;
cards;
D 56 365 1.17
E 20 90 0.96
F 23 139 0.64
;
run;
proc sql;
select a.firm as firm_a,b.firm as firm_b
from a a , b b
where abs(a.day-b.day)<=20
and 0.5<=b.size/a.size<=1.5
group by firm_a
having abs(a.bm-b.bm)=min(abs(a.bm-b.bm))
;
quit;