SAS合并多个表

SAS合并多个表,sas,Sas,我想知道合并多个表的最佳方法是什么。我在所有表中都有一个唯一的标识符。我应该在对表排序后一步连接所有表,还是应该一步一步地合并表。 这有关系吗?您可以一步完成多个合并。然而,这不是最安全的方法。如果您的数据可能存在缺陷,最好一步一步地进行。我知道,最好是一次合并一个步骤,但这是你的决定 proc sort data=data1; by id; run; proc sort data=data2; by id; run; proc sort data=data3; by id; run; dat

我想知道合并多个表的最佳方法是什么。我在所有表中都有一个唯一的标识符。我应该在对表排序后一步连接所有表,还是应该一步一步地合并表。
这有关系吗?

您可以一步完成多个合并。然而,这不是最安全的方法。如果您的数据可能存在缺陷,最好一步一步地进行。我知道,最好是一次合并一个步骤,但这是你的决定

proc sort data=data1; by id; run;
proc sort data=data2; by id; run;
proc sort data=data3; by id; run;

data combo;
    merge data1(in=a) data2(in=b) data3(in=c); 
    by id; 
    if a and b and c; /*Inner join. Change as needed. */
run;
这相当于:

data partial;
    merge data1(in=a) data2(in=b);
    by id; 
    if a and b; 
run;

data combo;
    merge partial(in=a) data3(in=b);
    by id; 
    if a and b;
run,

您可以在一个步骤中进行多个合并。然而,这不是最安全的方法。如果您的数据可能存在缺陷,最好一步一步地进行。我知道,最好是一次合并一个步骤,但这是你的决定

proc sort data=data1; by id; run;
proc sort data=data2; by id; run;
proc sort data=data3; by id; run;

data combo;
    merge data1(in=a) data2(in=b) data3(in=c); 
    by id; 
    if a and b and c; /*Inner join. Change as needed. */
run;
这相当于:

data partial;
    merge data1(in=a) data2(in=b);
    by id; 
    if a and b; 
run;

data combo;
    merge partial(in=a) data3(in=b);
    by id; 
    if a and b;
run,

没有特别的理由一步一步地去做,除非你有冲突的变量名需要解决,或者如果你的组合逻辑很复杂,你担心混淆一些东西。在任何情况下,都没有功能上的原因merge实际上比SQL中的
join
要简单一些,特别是语法更简单,所以它与SQL的情况有些不同。

没有特别的理由一步一步地执行,除非您有冲突的变量名需要解决,或者,如果你的组合逻辑很复杂,你担心混淆某些东西。在任何情况下,都没有功能上的原因merge实际上比SQL中的
join
要简单一些,特别是语法更简单,所以它与SQL的情况有些不同