【问题标题】:Merge SAS Datasets合并 SAS 数据集
【发布时间】:2016-08-18 22:39:11
【问题描述】:

我有两个数据集。

数据集:A

EE_ID     PRJ_CD  
100055    406
100055    475
100055    492
300028    475 

数据集:B

EE_ID     SSN               EMP_CD 
100055    0100055           E
300028    0300028           E 

我已经按照 EE_ID 对以上两个数据集进行了排序和合并。

DATA FINAL;                  
   MERGE A B;                  
   BY EE_ID;                

   IF A THEN OUTPUT;                     
RUN;     

输出:

EE_ID           PRJ_CD   SSN          EMP_CD
100055          475                        
100055          492                        
100055          406      0100055      E    
300028          475      0300028      E  

SSNEMP_CD 仅填充一行,其余两行对于 EE_ID = 100055 为空。

我的期望是:-

EE_ID           PRJ_CD   SSN         EMP_CD                                                
100055          475      0100055      E            
100055          492      0100055      E            
100055          406      0100055      E    
300028          475      0300028      E   

任何帮助将不胜感激。

谢谢!

【问题讨论】:

  • IF A THEN OUTPUT;?? A 将一直为空,使用此代码您根本不应该有结果。还请在您的问题中格式化文本。没那么难。

标签: sas


【解决方案1】:

正如上面提到的 fl0r3k,你提供的代码不起作用,你不会得到任何结果。

ABEE_ID 排序后,您可以使用以下代码:

data final;
 merge a b;
  by ee_id;
  run;

我不确定您对 IF A THEN OUTPUT; 的意图是什么如果您在 B 中的记录比在示例中显示的多,并且只想在 A 中包含记录,那么请尝试

data final;
 merge a (in=a) b;
  by ee_id;
  if a ;
  run;

根据上面的示例 A 和 B 数据集,您将通过使用任一代码获得相同的结果。

【讨论】:

    【解决方案2】:

    您的代码适合您的示例数据。

    data a;
      input ee_id prj_cd ;
    cards;
    100055    406
    100055    475
    100055    492
    300028    475 
    ;
    
    data b ;
      input ee_id ssn emp_cd $;
    cards;
    100055    0100055           E
    300028    0300028           E 
    ;
    
    data want;
      merge a(in=in1) b ;
      by ee_id;
      if in1;
    run;
    

    您的真实数据可能已经在 A 数据集上有 SSN 和 EMP_CD。如果您无法在此过程的早期将它们删除,您可以在合并语句中删除它们。

    data want;
      merge a(in=in1 drop=ssn emp_cd) b ;
      by ee_id;
      if in1;
    run;
    

    【讨论】:

      猜你喜欢
      • 2017-03-26
      • 1970-01-01
      • 1970-01-01
      • 2018-05-04
      • 2021-06-03
      • 2020-12-10
      • 2019-03-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多