2016-12-25 79 views
1

我有2個數據集,如下所示。在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; 

我得到的輸出作爲102 102 103 103 104 104 104

但是當我寫更新語句,

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

我得到輸出爲102 103 104.

你能否向我解釋一下更新聲明中發生了什麼。

Thanks in Advance, 
Nikhila 

回答

2

更新將事務1應用爲1.主表必須具有唯一BY值,這是正確的。事務表具有倍數,但沒有任何新值,因此不會添加它們。

如果事務的BY值不在表中,它會添加它。

通過更新和以下可能會有幫助:

  1. BY值在交易數據集和主 - >在主記錄與交易價值的更新。如果BY組的事務表中有多個記錄,則它們按順序應用。 Master表中只有一條記錄與事務表中最後一條匹配的值。
  2. BY值在交易中,不在master - >記錄被添加到master表
  3. BY值不在交易中,在master中 - > master中的記錄保持不變。

如果您將第二個變量添加到唯一的測試數據集中,這將更容易看出。

+0

感謝您的解釋:)我明白清楚 –

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