三、以MERGE敘述句做資料的橫向合併(變數合併)
當資料的變數太多時,通常被拆成多個資料,直到分析之前再把它們合併起來,此種情形需要用MERGE的敘述句去做處理,以下列出不同的情形來做介紹。
3.1 1對1合併(不採用BY敘述句)
採用此方法去合併的資料一定相當乾淨,因為此種方式是各資料集所對應的流水號做合併,會將第1筆資料與第1筆做合併,2筆資料與第2筆做合併…直到第n筆,若研究者是採用此方式合併,在合併之前務必再三確認各樣本點的順序是否相同,以避免得到錯誤的分析結果。
3.2 採用BY敘述句
採用BY敘述句來合併資料集時,有兩點注意事項(1)不同資料集之間一定要有至少一個相同的變項讓BY敘述句能夠使用;(2)所有資料集一定要先根據BY的變項先排序過,所合併完的資料自然而然也會根據此變數重新排序過,以下分成3種情形來做介紹。
a.各資料集BY變數無相同數值(無重複樣本)
也就是各資料集的每一個樣本皆是獨立樣本,資料集無提供的數值皆會以遺漏值做呈現。
b. 資料集BY變數有相同數值,但無相同變數
發現資料集1與資料集2的name中有相同數值CHANG及CHOU,如果兩個資料集中CHANG的數量相同or CHOU的數量相同,在合併時還是會按照順序一對一的合併,不過由下面的例子發現兩資料集CHANG及CHOU的數量不一樣多,因此在合併時會有一個規則。以CHANG為例,資料集1有兩筆,但資料集2僅有一筆(少了一筆),因此在合併成資料集3時,變數sex與age仍用原本的資料,但height與weight所缺少的筆數會用資料集2中CHANG的最後一筆數據進行補值的動作(黃色部分);CHOU也是一樣,資料集1有一筆(少了一筆),但資料集2有兩筆,因此在合併成資料集3時,變數height與weight仍用原本的資料,但sex與age所缺少的筆數會用資料集1中CHOU的最後一筆數據進行補值的動作(綠色部分)。
c. 資料集BY變數有相同數值,且有相同變數
大致上跟上面(二)的情形差不多,唯一不同的是兩個資料集同時有變數rank。以CHANG為例,當SAS讀到資料集1的時候,rank的數值應該為5和6,但SAS再繼續讀資料集2的時候,又會偵測到一個相同變數rank且數值為11,此時會把第1筆資料的5給覆蓋取代成11。在CHOU方面,當SAS讀到資料集1的時候,rank的數值應該為7和7,但SAS再繼續讀資料集2的時候,又會偵測到一個相同變數rank且數值為33和77,此時會把第1筆資料的7給覆蓋取代成33,第2筆資料的7給覆蓋取代成77。
Ps.很複雜對吧!!不過一般研究不太可能會發生這種BY變數的數值及變數重覆問題。