2017-02-16 18 views
0

有了這個代碼創作的串連SAS(SQL)表的

data &OUT_DATA.; 
set &IN_DATA_ORIGINAL_RISK_SCEN. 
work.RISK_SCENARIOS_FROM_CF_TO_LOAD(drop=REPORTING_DT 
HORIZON_TIME_PERIOD_CNT); 
run 

而且我的理解是,它通過與RISK_SCENARIOS_FROM_CF_TO_LOAD串聯DATA_ORIGINAL_RISK_SCEN創建表OUT_DATA。 但是這兩個表的變量是相同的,所以我不理解它的作用,假設在OUTPUT表中的值是RISK_SCENARIOS_FROM_CF_TO_LOAD的值。

你能給我一些幫助嗎?謝謝。

+0

concatenate是一個合併。 SET正在追加。有關詳細信息和示例,請參閱文檔。 http://support.sas.com/documentation/cdl/en/basess/68381/HTML/default/viewer.htm#p19t3r1gxavpoin14jdd23gcheve.htm – Reeza

回答

1

set語句上的兩個數據集將行附加在一起 ​​- 因此,如果第一個行上有1000行,第二個行上有400行,則最終輸出中會有1400行。如果它們具有相同的變量,那麼最終的變量就是這一組變量;如果還有其他變量,那麼數據集上的所有變量都會出現在最終數據集中,並且填充來自沒有該變量的數據集的行的缺失。

例如:

data class; 
    set sashelp.class 
     sashelp.class(where=(sex='M')); 
run; 

這追加的男性到滿級數據集,所以他們有兩次在最後的輸出;共有29行(主數據集中有19個,另有10個爲男性),相同的5個變量。

data class_cars; 
    set sashelp.class 
     sashelp.cars 
    ; 
run; 

該數據集沒有任何意義,但它顯示了當您有兩個數據集具有不同變量時會發生什麼。

如果您只能看到一個數據集中的行,那麼要麼您有一些標準基於您刪除行,或者您在其中一個輸入數據集中沒有行。