merge及其与sql的区别

merge语句

用merge语句将两个或多个SAS数据集中的观测值横向匹配合并成一个新的数据集的一个观测值。

DATA <新数据集名称>;
MERGE <已有数据集列表>;
BY <变量1> [<变量2>…];
RUN;

说明:
1、匹配合并指来自不同数据集中具有至少一个共同变量(匹配变量),按照匹配变量取相同数值的观测值横向合并;
2、用by语句指定匹配的变量;
3、每一个待合并数据集需先按匹配变量排序。

 

merge与SQL合并的区分
merge适合一对一或一对多(多对一)合并
    1.merge a b;by x;相当于SQL的full join:即a full join b on a.x=b.x;
    2.merge a(in=ina) b(in=inb);by x;if ina;相当于sql的左连接 a left join b on a.x=b.x;
    3.merge a(in=ina) b(in=inb);by x;if ina and inb;相当于SQL的内连接:a inner join b on a.x=b.x;
sql适合多对多合并

(两者区别较大:merge只取A.x与B.x的并集,即AUB;而SQL则取两者的笛卡尔乘积数即A.x的数量*B.x的数量)

 

 

参考:

(11条消息) SAS-数据步-合并-Merge语句_c573489167的博客-CSDN博客_sas中merge的用法

谁能讲讲merge和sql合并表格功能特性上的异同 - SAS专版 - 经管之家(原人大经济论坛) (pinggu.org)

posted @ 2022-11-05 21:02  Rachellaw  阅读(328)  评论(0)    收藏  举报