【问题标题】:SAS: Merging two datasets with the same variable under a different nameSAS:合并具有不同名称的相同变量的两个数据集
【发布时间】:2018-05-04 15:27:44
【问题描述】:

我试过搜索这个问题,但我认为以前没有人问过这个问题。

我正在跨两个数据集匹配特定客户。两个数据集中都有一个变量,每个客户端都有一个唯一标识符,并且这个唯一标识符对于两个数据集中的每个客户端都是相同的。

问题是,这个唯一标识符的变量名在两个数据集中是不同的,所以我不确定如何合并它们?

任何帮助将不胜感激!

谢谢

【问题讨论】:

    标签: merge sas rename


    【解决方案1】:

    在任一或两个合并数据集上使用 rename= 数据集选项,直到键值变量具有相同的变量名称。

    data one;
      do id = 1 to 10;
        x = id;
        if mod(id,3)=0 then output;
      end;
    run;
    
    data two;
      do myid = 1 to 10;
        if mod(myid,2)=0 or myid > 7 then output;
      end;
    run;
    
    data want;
      merge
        one
        two (rename=(myid=id))
      ;
      by id;
    run;
    
    data want;
      merge
        one (rename=(id=commonid))
        two (rename=(myid=commonid))
      ;
      by commonid;
    run;
    

    【讨论】:

      【解决方案2】:

      如果要为标识符保留不同的变量名,请使用 sas proc sql。

          proc sql;
              create table mergeddata as 
              select a.*, b.* from mydata1 as a full join
              my data2 as b on a.someid1=b.someid2;
          quit;
      

      只是我的一个偏好,但如果有办法避免这种情况,我不赞成需要以任何方式修改基础数据的解决方案。

      【讨论】:

      • 我一直更喜欢 proc sql 用于小型数据集,但避免使用它用于大型数据集(1 GB+),因为 proc sql 性能不可靠。
      • @Nickolay——我没有遇到这个问题,但这可能是因为我一直在使用 SAS 的服务器安装。我还应该提到,由于可移植性,我也一直倾向于 proc sql。
      【解决方案3】:

      重命名其中一个 ID 以匹配另一个 (rename=(id2=id)) 下面的完整示例:

      创建虚拟数据:

      data t1; 
      input id  Name $; 
      cards; 
      1 John
      2 Jack
      ; 
      run; 
      
      data t2; 
      input id2  title $; 
      cards; 
      1 Manager
      2 Admin
      3 Helpdesk
      ; 
      run;
      

      将 ID2 重命名为 ID,然后进行合并:

      data megered;
      merge 
          t1
          t2 (rename=(id2=id))
          ;
      by id;
      run;
      

      输出:

       id=1 Name=John title=Manager
       id=2 Name=Jack title=Admin 
       id=3 Name=  title=Helpdesk
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-07-08
        相关资源
        最近更新 更多