RT,程序如下,对两个表中共同变量stkcd,enddt配对:
proc sql noprint;
create table abc as
select *
from f1 left join f2
on f1.stkcd=f2.stkcd
and
year(f1.enddt)=year(f2.enddt);
quit;
SAS join是 cross join
如果你的 f1 和f2都有重复的 stkcd和 enddt,比如f1有a个重复,f2有b个重复,对于这组 stkcd和enddt,就有a*b个observation
所以结果多于原来的很正常。
简单举个例子
f1
stkcd enddt y
1 2 3
1 2 4
f2
stkcd enddt y
1 2 1
12 2
那么join的结果就是
1 2 3 1
1 2 3 2
1 2 3 1
1 2 3 2
noveror 发表于 2011-2-28 21:39
RT,程序如下,对两个表中共同变量stkcd,enddt配对:
proc sql noprint;
create table abc as
select *
from f1 left join f2
on f1.stkcd=f2.stkcd
and
year(f1.enddt)=year(f2.enddt);
quit;