个人总结了一下merge和proc sql进行数据拼接的区别,请大家看后多多指教交流。
设拼接第一张表为A和第二张为B
拼接方式:
1、 merge是对不同数据集所有观测进行拼接;proc sql可以是inner 、left join、rightjoin和full join四种方式拼接方式。
2、 inner是拼接数据集中的交集;
3、 leftjoin是第一张表所有观测+第二张表中基于条件匹配的观测形成同一观测;
4、 rightjoin是第二张表所有观测+第一张表中基于条件匹配的观测形成同一观测;
5、 fulljoin是第一张表所有观测+第二张表所有观测(基于条件匹配的观测为同一观测);
变量名:
1、 proc sql拼接时变量名是否一致不影响匹配结果;
2、 merge拼接时变量名不一致,产生结果不一致:
a) 有相同变量名,B表中与A表中变量名相同的列观测被B替换,若A>B,则结果中包括A中相同变量未被替换部分;若A<B,则结果中相同变量观测值仅为B观测值;观测数是大小为A和B观测数的最大值;
b) 无相同变量名,则仅是将B表水平放在A表后
c) 使用BY语句时,需要对A和B进行排序。
观测值有重复:
1、 merge生成结果中,有重复的观测值为相同变量中观测值最大的数量,若A中匹配变量的观测值有2个重复值,B中有3个,则生成结果中重复变量的观测值为3;
2、 proc sql则是依据条件进行笛卡尔计算,若A中匹配变量的观测值有2个重复值,B中有3个,则生成结果中重复变量的观测值为9。


雷达卡


京公网安备 11010802022788号







