SAS PROC SQL使用FULL JOIN连接两个表

sas*_*wer 3 sas

假设我有两个数据集,

--Table 1--      --Table 2--
ID  Amount       ID  Amount1 Code
A01   0.1        A01  0.3     x
A02   0.2        A02  0.2     y
A02   0.3        A03  0.4     g 
A03   0.4        A03  0.5     u
A05   0.6        B01  0.1     k
Run Code Online (Sandbox Code Playgroud)

我试图通过连接表1和表2来创建一个新的数据集(表3).预期的最终结果应如下所示:

--Table 3--
ID  Amount  Amount1  Code
A01   0.1     .       .
A01   .       0.3     x
A02   0.2     0.2     y
A02   0.3     .       .
A03   0.4     0.4     g
A05   0.6     .       .
B01   .       0.1     k
Run Code Online (Sandbox Code Playgroud)

表格将根据ID加入,其中金额和金额1同时进行比较.我尝试使用PROC SQL FULL JOIN,但结果似乎有点奇怪.谢谢.

vas*_*sja 6

新手用户唯一可能不明显的事情是必须对ID进行coalesce().

proc sql;
create table joined as
select coalesce(a.ID, b.ID) as ID, a.Amount, b.Amount1, b.Code
from Table1 a
full join Table2 b
on a.ID = b.ID;
quit;
Run Code Online (Sandbox Code Playgroud)

无论如何,SAS这样做的方法是合并两个表.如果您对表进行了预先排序或对ID具有索引,那么这也会更有效:

data merged;
merge table1 table2;
by ID;
run;
Run Code Online (Sandbox Code Playgroud)