2011-01-20 51 views
3

我學習的SAS數據合併,並找到下面的例子關於「數據合併」在SAS

data newdata; 
merge yourdata (in=a) otherdata (in=b); 
by permno date; 

我不知道該怎麼辦「(在=一)」和「(在= B) 「 意思?謝謝。

回答

7

yourdata(in=a)在程序數據向量中創建一個名爲'a'的標誌變量,如果記錄來自yourdata則包含1;如果不是,則包含0。然後您可以使用這些變量根據記錄的來源執行條件操作。

如果你看到

data newdata; 
merge yourdata(in=ThisRecordIsFromYourData) otherdata(in=ThisRecordIsFromOtherData); 
by permno date; 
run; 

假設需要從yourdata記錄在此步驟進行操作可能更容易理解,而不是那些從otherdata,然後你可以做這樣的事情

data newdata; 
merge yourdata(in=ThisRecordIsFromYourData) otherdata(in=ThisRecordIsFromOtherData); 
by permno date; 
if ThisRecordIsFromYourData then do; 
    * some operation here for yourdata records only ; 
end; 
run; 

這些變量的一個明顯用途是使用if語句控制將發生什麼樣的「合併」。例如,if ThisRecordIsFromYourData and ThisRecordIsFromOtherData;將使SAS只包含匹配來自兩個輸入數據集的變量(如內連接)的行。

+1

還應該注意的是,這些標誌變量不會保存在正在創建的數據集中。如果你想保留它們,我通常會創建像這樣的附加變量:a1 = a; b1 = b;然後在輸出數據集中引用a1和b1。 – 2011-01-21 15:30:12