在SAS中使用更新和合并

时间:2016-12-25 05:18:30

标签: sas

我有2个数据集,如下所示。

dataset ab;
input m;
cards;
   102
   103
   104
run;

dataset ac;
input m;
cards;
102
102 
103
103
104
104
104
run;

当我写下面的陈述时,

data a;
merge ab ac;
by m;
run;

我的输出为102 102 103 103 104 104 104

但是当我写下更新声明时,

data b;
update ab ac;
by m;
run;

我的输出为102 103 104。

请您解释一下更新声明中发生了什么。

Thanks in Advance,
Nikhila

2 个答案:

答案 0 :(得分:2)

更新将事务1应用1.主表需要具有唯一BY值,该值为true。事务表具有倍数,但没有任何新值,因此不会添加它们。

如果事务的BY值不在表中,则会添加它。

使用UPDATE和BY可能会有所帮助:

  1. BY值在事务数据集中AND master - > master中的记录是包含来自事务的值的更新。如果BY组的交易表中有多个记录,则每个记录按顺序应用。 Master表中只有一条记录,其中包含事务表中最后一次匹配的值。
  2. 交易中的BY值,而不是主数据 - >记录添加到主表
  3. BY值不在交易中,在Master中 - >主人的记录保持不变。
  4. 如果将第二个变量添加到唯一的测试数据集中,这将更容易看到。

答案 1 :(得分:0)

data ab;
   input m @@;
   cards;
101 102 103 104
;;;;
   run;
data ac;
   input m @@;
   cards;
102 102  103 103 104 104 104
;;;;
   run;

data b;
   update ab ac(in=in1);
   by m;
   if first.m then tCount=0;
   tCount + in1;
   run;
proc print;
   run;

enter image description here