如何在SAS中引用两个数据集

时间:2015-05-25 10:23:32

标签: sas

我有两个单独的数据集Data2Data1Data2包含一组名称。 Data2包含已更改的名称(原始名称和新名称)。如何使用Data1使用新名称更新Data1: Richard, Tommy, Apple, John, Data2: (original:first column) Richard; (current: second column) Big Richard Target: Big Richard, Tommy, Apple, John,

table1

2 个答案:

答案 0 :(得分:1)

假设您熟悉SQL-left连接语法,可以使用coalesce()函数来实现此目的。它只返回第一个非缺失值。

使用@ user667489的样本数据集:

proc sql noprint;
  create table want as
  select coalesce(b.newname,a.name) as name
  from original a
  left join current b on b.name = a.name
  ;
quit;

答案 1 :(得分:0)

如果您没有任何重复的名称,合并将很容易实现,例如

data original;
    input name $16.;
    cards;
Richard
Tommy
Apple
John
;
run;

data current;
    input name :$16. newname $16.;
    cards;
Richard Big Richard
;
run;

proc sort data=current;
    by name;
run;

proc sort data=original;
    by name;
run;

data new;
    merge original current(in=b);
    by name;
    if b then name=newname;
    drop newname;
run;

如果您希望直接覆盖原始数据集,还有其他各种方法可以执行此操作 - 例如modify数据步骤语句或带有proc sql语句的insert - 但这些语句的语法更为繁琐。