我有两个数据集,需要第三个数据集作为输出。
ONE TWO
---------- ----------
ID FLAG NUMB
1 N 2
2 Y 3
3 Y 9
4 N 2
5 N 3
9 Y 9
10 Y
OUTPUT
-------
ID FLAG NEW
1 N N
2 Y Y
3 Y Y
4 N N
5 N N
9 Y Y
10 Y N
如果在TWO.NUMB中找到ONE.ID并且它是ONE.FLAG = Y则新变量NEW = Y 否则NEW = N
我能够使用PROC SQL执行此操作,如下所示。
proc sql;
create table output as
(
select distinct id, flag, case when numb is null then 'N' else 'Y' end as NEW
from one
left join
two
on id = numb
and flag = 'Y'
);
quit;
这可以在DATA step / MERGE中完成吗?
答案 0 :(得分:0)
因为你有一个sql步骤尝试,所以这是
的改进- 此sql步骤不需要合并 -
proc sql noprint;
create table output as
select distinct *, case
when id in (select distinct numb from two) then "Y"
else "N"
end as new
from one
;
quit;