當資料合併時必須要有一組關鍵字(KEY WORD)存在於每一個欲合併起來的檔案中,但沒有關鍵字時結果將如何?

舉以下的例子來聊聊

以下有一個經過3個資料檔合併後的檔案,這3個檔各只有一個變項: year(87~99), month(01~12), group(10~30),且3個檔的內容完全不同
但彼此間沒有關鍵字。過去我們將會寫以下這麼一隻程式(如程式一),如下所示, 其中合併後的檔案為ymg3個檔案的檔名依序為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;

結果一

merge 1  


下方的程式是利用SQL(結構式查詢語言)去解決以上的難題,程式如下(如程式二)
由於SQL主要應用在資料庫的資料關聯與管理,在資料比對功能比merge強大。

語法中的CREATE TABLE即產生新的資料表單,檔名為ymg。而資料被產生的條件(as)select *(選取每個檔案的所有變項),而這些變項來自 year, month,group3個檔案( 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筆,僅截取一部份結果供各位參考

merge 2  

arrow
arrow

    estat 發表在 痞客邦 留言(0) 人氣()