使用另一个表更新数据集中列的值

时间:2013-11-15 21:02:44

标签: sas

如果我的表A有两列:ID和Mean,而表B有一长列包括Mean,我怎样才能用表A中的ID替换表B中的Mean列的值?

我已尝试过PROC SQL UPDATE以及DATASET MERGE和DATASET UPDATE,但是当两个表中的列数不相等时,它们会不断添加行。

1 个答案:

答案 0 :(得分:2)

data want;
merge have1(in=H1) have2(in=H2);
by mergevar;
if H1;
run;

这将保证H2不会添加任何行,除非其中一个by值存在重复值。其他条件也可以使用;对于右侧数据集,if h2;会做同样的事情,而if h1 and h2;只会保留来自两个表的记录。

PROC SQL连接也应该相当容易。

proc sql;
 create table want as
 select A.id, coalesce(B.mean, A.mean)
 from A left join B
 on A.id=B.id;
quit;