2012-10-10 86 views
2

我有兩個數據集。 Table1只有一條記錄。 Table2有很多記錄。我想將這些結合起來,以便將來自Table1的變量添加到Table2中的每個記錄中。合併SAS中的所有記錄

我知道這可以用proc sql就像這樣:

proc sql; 
create table3 as 
    select * 
    from table1, table2; 
quit; 

我想同樣的結果,但使用的數據的步驟。什麼是最好(優雅,高效)的方式來做到這一點?

回答

8
data table3; 
if _n_ = 1 then set table1; 
set table2; 
run; 

這是最簡單的方法。

+0

這有用,但我很困惑。看起來像table1正在被讀取一次,當'_n_ = 1'時。你能解釋一下發生了什麼嗎?謝謝! – itzy

+2

當_n_ = 1時,表1實際上只被讀取一次 - 因此,爲什麼您不能在表1上達到EOF標記並在1次迭代後結束數據步驟(以及在2次迭代開始之後)。 發生了什麼是通過set/merge/update自動進入的任何變量RETAINed(更準確地說,對於每次迭代不會設置爲零),因此Table1中的所有變量都會通過迭代保留。 – Joe

+1

http://www2.sas.com/proceedings/sugi28/103-28.pdf比我的解釋(接近開頭)略好一些。 – Joe