假设我有两个数据集,
--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,但结果似乎有点奇怪.谢谢.
新手用户唯一可能不明显的事情是必须对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)