我合并了两个数据集如下:
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;
答案 0 :(得分:3)
一种常见的方法是将表别名与连接变量一起使用。
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为null /缺失,那么它只来自表a。 (是的,您可以单独引用这两个,即使它们基本相同并在结果表中合并。)