SAS如何匹配set语句中的列

How does SAS match columns in a set statement

当我们这样做时:

data test;
   set temp1 temp2;
run;

是否按列名或列位置匹配 temp1temp2

我猜是列名,但找不到确认。

如果 temp1 中存在而不是 temp2 中的列会怎样?

按名字。不在两个 table 上的列都存在于输出 table 上,但缺少来自源 table 的行的值,但它们不存在。这超级容易测试。

data d1;
    input var1 $ var2 $ var3;
    datalines;
e j 1
e k 2
e l 3
;
run;

data d2;
    input var2 $ var1 $ var5;
    datalines;
e j 1
e k 2
e l 3
;
run;

data d3;
    set d1 d2;
run;

proc print data=d3;
run;

结果:

Obs var1 var2 var3 var5

 1   e    j     1    . 
 2   e    k     2    . 
 3   e    l     3    . 
 4   j    e     .    1 
 5   k    e     .    2 
 6   l    e     .    3 

如果存在变量类型冲突,SAS 将抛出错误或警告。