Merge SAS:以不同名称合并具有相同变量的两个数据集

Merge SAS:以不同名称合并具有相同变量的两个数据集,merge,sas,rename,Merge,Sas,Rename,我试着寻找这个问题,但我认为以前没有人问过 我正在两个数据集中匹配特定的客户机。两个数据集中都有一个变量,每个客户机都有一个唯一的标识符,并且两个数据集中的每个客户机都有一个唯一的标识符 问题是,这个唯一标识符的变量名在两个数据集中是不同的,所以我不确定如何合并它们 任何帮助都将不胜感激 谢谢在合并数据集的其中一个或两个上使用重命名=数据集选项,直到键值变量具有相同的变量名 data one; do id = 1 to 10; x = id; if mod(id,3)=0 t

我试着寻找这个问题,但我认为以前没有人问过

我正在两个数据集中匹配特定的客户机。两个数据集中都有一个变量,每个客户机都有一个唯一的标识符,并且两个数据集中的每个客户机都有一个唯一的标识符

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

任何帮助都将不胜感激


谢谢

在合并数据集的其中一个或两个上使用
重命名=
数据集选项,直到键值变量具有相同的变量名

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;

如果要为标识符保留不同的变量名,请使用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;

这只是我的一个偏好,但如果有办法避免的话,我不赞成以任何方式修改底层数据的解决方案

重命名其中一个id以匹配另一个
(重命名=(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

对于小型数据集,我总是更喜欢
proc-sql
,但对于大型数据集(1 GB以上),我避免使用它,因为proc-sql的性能不可靠。@Nickolay--我没有遇到这个问题,但这可能是因为我一直在使用SAS的服务器安装。我还应该提到,由于可移植性,我也倾向于procsql。