我有两个数据集: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;
答案 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;