假设我有两个数据集,
--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
我正在尝试通过连接表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
表格将根据ID加入,其中金额和金额1同时进行比较。 我尝试使用PROC SQL FULL JOIN,但结果似乎有点奇怪。 谢谢。
答案 0 :(得分: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;
无论如何,SAS这样做的方法是合并两个表。如果您对表进行了预先排序或对ID具有索引,那么这也会更有效:
data merged;
merge table1 table2;
by ID;
run;
答案 1 :(得分:0)
以下代码产生的结果与您要求的结果非常接近,尽管我无法弄清楚为什么" u"在您请求的数据集中设置为缺失。
proc sql;
create table joined as
select coalesce(a.ID, b.ID) as ID, a.Amount, b.Amount, b.Code
from Table1 a natural full join Table2(rename=(amount1=amount)) b
;
quit;