2013-07-27 147 views
-2

我有以下两个数据集并需要第三个数据集作为输出。SAS左合并SAS合并或数据步骤中的逻辑

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 

如果ONE.ID在TWO.NUMB发现,它的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步骤/ MERGE中完成吗?

+0

请作出努力,首先要解决的问题,后你试过了什么。 – Joe

+0

对不起,我给你你一个自由的问题。现在展示一些工作。 –

+0

@HongOoi在使用PROC SQL之前,我曾尝试过使用PROC SQL,但在这里发布问题并且工作正常,但无法使用数据tep/merge,因为我刚开始学习SAS。现在我用PROC SQL语句更新了这个问题 – athresh

回答

0

,因为你在这里有一个SQL一步的尝试是对

的改善 - 这一步SQL不需要merge--

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;