對於我正在編寫的SAS程序,我需要將完全外部聯接4個不同的工作表完成等同於一個表。我最初只是想在PROC SQL
這樣做,但很快就失控了,所以我決定在數據步驟中設置MERGE
。在一個PROC排序多個表排序
舉個例子:
proc sort data = TABLE_1; by COL1 COL2 COL3;
proc sort data = TABLE_2; by COL1 COL2 COL3;
proc sort data = TABLE_3; by COL1 COL2 COL3;
proc sort data = TABLE_4; by COL1 COL2 COL3;
data NEW_TABLE;
merge TABLE_1 TABLE_2 TABLE_3 TABLE_4;
by COL1 COL2 COL3;
這似乎有點麻煩,需要每個表由完全相同的字段集分別排序。我已經設置了一個宏變量來等效於列名列表,但我仍然必須爲每個表都有一行。
有沒有辦法寫一些東西來同時在多個表上執行PROC SORT
,如果它們都有相同的列?據我所知SAS的,我希望是這樣工作的:
proc sort data = (TABLE_1 TABLE_2 TABLE_3 TABLE_4); by COL1 COL2 COL3;
甚至這樣的事情,如果表是在這個例子中編號,如:
proc sort data = (TABLE_1-TABLE_4); by COL1 COL2 COL3;
但我可沒有能夠得到任何工作。誠然,我沒有嘗試通過數組來設置它,但主要是因爲對於如此短的表列表(並且更長的列表列表可能完全保證不同的合併解決方案)似乎是過度的。
從響應here來看,我一般不會樂觀地在多個表上執行PROC,儘管也許排序的工作方式不同。
請記住,MERGE和FULL JOIN以不同方式處理多對多匹配。 – Tom
'proc sql'可以一次加入多個表,不需要先排序,但可能效率不高。 – david25272