使用更新表更新主表,而主表SAS中没有障碍

时间:2016-07-29 10:05:57

标签: sas

我有两个数据集:base(主表)updateX(可能包含新观察的更新表)

data base;
    input Field1 $ Field2 $ Field3 $ Field4 $;
    datalines;
F 0001 20160501 ABC
NF 0001 20160502 CDF
NF 0002 20160601 ABC
NF 0002 20160602 CDF
    ;
run;

data updateX;
    input Field1 $ Field2 $ Field3 $ Field4 $;
    datalines;
F 0001 20160502 CDF
F 0002 20160602 CDF
F 0003 20160603 CDF
    ;
run;

我想要的输出

F 0001 20160501 ABC
F 0001 20160502 CDF
NF 0001 20160502 CDF
F 0002 20160602 CDF
F 0003 20160603 CDF

我的努力:

data base;
    modify base updateX;
    by Field2 Field3;
run;

1 个答案:

答案 0 :(得分:4)

使用MODIFY,您需要告诉SAS REPLACE或OUTPUT,具体取决于记录是否匹配。

data base;
   modify base updatex;
   by field2 field3;
   if _iorc_ eq 0 then replace;
   else do;
      output;
      _error_=0;
      end;
   run;

如果您可以使用UPDATE创建新数据集,则会更容易。通过更新,更新匹配的记录,然后输出(替换)并输出事务文件中的新记录。

data ubase;
   update base updatex;
   by field2 field3;
   run;