當資料合併時必須要有一組關鍵字(KEY WORD)存在於每一個欲合併起來的檔案中,但沒有關鍵字時結果將如何?
舉以下的例子來聊聊
以下有一個經過3個資料檔合併後的檔案,這3個檔各只有一個變項: year(87~99), month(01~12), group(10~30),且3個檔的內容完全不同
但彼此間沒有關鍵字。過去我們將會寫以下這麼一隻程式(如程式一),如下所示, 其中合併後的檔案為ymg,3個檔案的檔名依序為year, month, group,結果資料合併後如結果一。
data year; /*--檔案1 --*/
do year= 86 to 98;
year+1;
output;
end;
proc print data=year;
run;
data month; /*--檔案2 --*/
input month $ @@;
cards;
01 02 03 04 05 06 07 08 09 10 11 12
;
proc print data=month;
run;
data group; /*--檔案3 --*/
do group= 9 to 29;
group+1;
output;
end;
proc print data=group;
run;
若有關鍵字,例如研究序號, 身份證號等,我們會在merge之後再加上by <關鍵字>,但如今沒有,該如何處理?
<程式一>
data ymg;
merge year month group;
*by ??;
proc print;
run;
結果一
下方的程式是利用SQL(結構式查詢語言)去解決以上的難題,程式如下(如程式二)
由於SQL主要應用在資料庫的資料關聯與管理,在資料比對功能比merge強大。
語法中的CREATE TABLE即產生新的資料表單,檔名為ymg。而資料被產生的條件(as)為select *(選取每個檔案的所有變項),而這些變項來自 year, month,group等3個檔案( from year, month,group;),如此即完成程式的撰寫。
有興趣學習完整課程,可參考SAS台灣分公司的網站。http://www.sas.com/apps/wtraining2/coursedetails.jsp?ctry=tw&course_code=TWN100
<程式二>
proc sql;
create table ymg as
select *
from year, month,group;
run;
結果二,共468筆,僅截取一部份結果供各位參考