合并SAS中的数据集

时间:2012-06-06 15:07:10

标签: sas

我有一个相当简单的问题。

  

有没有办法在SAS中合并$ n $数据集,其中$ n> 2 $。我知道如何合并2个数据集。

由于

高尔斯

3 个答案:

答案 0 :(得分:2)

您可以使用与仅两个语法相同的语法合并多个数据集:

data all;
 merge ds1 ds2 ds3 ...;
 by some_list_of_variables;
run;

如果您要合并许多数据集,则可能需要修改一个列出所有数据集的宏。

答案 1 :(得分:2)

除了提供的代码@itzy之外,您还可以使用MERGE语句中的IN =选项来标识数据集。这允许您只接受所需的匹配。此外,您必须在BY语句中使用公共变量名称。您可以包含RENAME =语句来创建在BY语句中使用的公共变量。

(未经测试的代码)

data all;
 merge ds1(in=one rename=(ds1_id=id)) 
       ds2(in=two rename=(ds2_id=id))
       ds3(in=three rename=(ds3_id=id))
       ;
 by some_list_of_variables;
 if one and two and three ; /* Creates only matching records from all */ 
run;

答案 2 :(得分:1)

即使您已经说过要“合并”数据集,请注意MERGE语句不是唯一的选项。如果您的合并键在多个数据集中有重复项,那么使用MERGE语句可能会给出逻辑错误的结果,即使它可以正常工作而不会抱怨。在这种情况下,您可以使用PROC SQL - 我还记得从SAS 9.1开始,PROC SQL可以更高效。

示例 -

proc sql;
select <fieldlist>
from data1 t1, data2 t2, data3 t3, data4 t4
where <join condition>;
quit;