SAS中更新和合并的使用

SAS中更新和合并的使用,sas,Sas,我有如下两个数据集 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; data b; update ab ac; by m; run; 我得到的输出是102 102 103 104 但当我写更新声明时 data a; mer

我有如下两个数据集

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;
data b;
update ab ac;
by m;
run;
我得到的输出是102 102 103 104

但当我写更新声明时

data a;
merge ab ac;
by m;
run;
data b;
update ab ac;
by m;
run;
我得到的输出是102103104

你能解释一下更新声明中发生了什么吗

Thanks in Advance,
Nikhila

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

如果事务的BY值不在表中,它将添加它

通过更新和以下方式可能会有所帮助:

  • “按值”位于事务数据集中,“主控”中的“主控->记录”使用事务中的值进行更新。如果按组的事务表中有多条记录,则按顺序应用每条记录。主表中只有一条记录具有事务表中最后一个匹配项的值
  • 根据事务中的值,而不是主数据->将记录添加到主数据表中
  • 按值不在事务中,在主控中->主控中的记录保持不变 如果将第二个变量添加到唯一的测试数据集中,这将更容易看到

    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;
    

    谢谢你的解释:)我理解得很清楚