我合并两个数据集如下:
data ds3;
merge ds1(in=in1) ds2(in=in2);
by mrgvar;
if in1;
if in2 then flag=1;
run;
如果我改为使用 PROC SQL
步骤来执行此操作,我该如何设置 flag
变量?
proc sql;
create table ds3 as
select a.*
,b.*
,???
from ds1 as a
left join
ds2 as b
on a.mrgvar=b.mrgvar;
quit;
最佳答案
一种常见的方法是将表别名与连接变量一起使用。
proc sql;
create table ds3 as
select a.*
,b.*
,case when b.mrgvar is null then 0 else 1 end as flag
from ds1 as a
left join
ds2 as b
on a.mrgvar=b.mrgvar;
quit;
达到那种效果 - 如果 b.mrgvar 为空/缺失,则它仅来自表 a。 (是的,您可以单独引用两者,即使它们基本相同并合并到结果表中。)
关于sas - 数据步合并 PROC SQL 等效标记在哪个表记录中找到,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26502040/