我总结一下使用set和proc sql进行数据拼接数据的差别,具体如下:
1、 set仅仅是用在表中所有观测值的拼接; proc sql可以用在寻找表之间观测值的差异及共同值;
2、 无论变量名是否相同,set语句均可以拼接,procsql语句使用corr关键词后,只能是变量名相同的进行拼接(除 outer union),未使用corr关键字,若A表(变量名为:A1A2 A3)B表(B1 B2),则结果变量中变量名为A1 A2 A3; 若A表(变量名为:A1A2)B表(B1 B2 B3),则结果变量中变量名为A1 A2 B3;
3、 有相同变量名时set和by一起使用与PROC SQL使用outer union corr、orderby的结果一致;变量名不同时,set与PROC SQL使用outerunion结果一致;
4、 set拼接的结果中包括重复值, PROC SQL使用except、intersect和union拼接时,若未使用ALL关键字则会去除重复值;
5、 set和by语句一起用时,需对表先排序,否则会报错;proc sql中使用一般会自动排序,但是使用 union all等语句时也会不排序,但可以直接用orderby进行排序。
以上总结还不够全面,可能还不够精准,希望看到的同学可以进行补充和完善,非常感谢!