合併資料是大型資料(譬如資料庫)最常見的資料處理之一,由於資料龐大,因此這些資料在一開始都會被拆分在很多資料集裡,直到分析之前才會進行合併的動作。在介紹資料合併之前,將先介紹一下相關有用的敘述句。
一、資料處理常用敘述句
1.1 BY 變數名稱
BY通常需要搭配其他敘述句來使用,譬如說資料BY變數A來排序,BY變數B將兩筆資料作橫(縱)向合併,甚至BY變數C來做分析,以下則是根據姓名來做遞減排序。但除了SORT的敘述句之外,若其他敘述句要搭配BY來使用時,需先將資料排序過,否則在LOG視窗會跑出錯誤訊息。
Ps.如果想要遞增排序則把DESCENDING移除(因為SAS裡的預設為遞增)
1.2 DROP = 變數名稱
在欲建立的資料集中刪除不要的變項,直接放在DATA敘述句當中即可。
1.3 FIRSTOBS = n
進行資料處理時,某指定資料集從第n筆開始處理,換句話說第n筆之前的資料則直接捨去,以下例子為從第9筆開始處理。
1.4 IN = 變數
以下的語法,是將兩資料集根據變數A做合併時,另外去新增變數去判別此筆資料是由哪個資料集提供的,若該筆資料的任何一個欄位是由case1資料集得到的,那麼Source1的數值為1,若無任何欄位由case1資料集得到的,那麼Source1的數值為0;反之若該筆資料的任何一個欄位是由case2資料集得到的,那麼Source2的數值為1,反之則為0。
二、以SET敘述句做資料的縱向(直向)合併或複製
2.1 POINT=N
與DO迴圈配合使用,可以保留自己所需要的第n筆資料!!最近剛接觸到一個資料庫的諮詢碰到一個資料處理的例子剛好適用,雖然不是最快的方式,但仍然是解決方法之一,問題是這樣子的:「研究者想從資料集中將不適合的樣本剃除,而且研究者已經知道要保留下來的樣本流水號,無奈這些人是不連號的,因此最後我根據特定條件去把符合樣本的ID篩選出來,最後再保留這些ID的樣本」,因此無法使用上述的FIRSTOBS=n或OBS=n,以下將用個例子做介紹。
這一段語法是說,研究者欲建立一個資料集case2,這個case2的資料case1複製過去,但只留下第1,3,4筆的資料。
2.2 常利用SET來成立新的資料集
我們常會利用SET敘述句去搭配KEEP或是DROP來建立一個新的資料集,最常見的建立方式有以下幾種(以KEEP為例)。以下幾種方式皆能建立出您要的資料,僅差別在記憶體儲存的不同,不過我想以目前的電腦科技,這個差別應該不至於太大才對。
Ps.書上較推薦case2的方式,所佔的記憶體容量較小
2.3 搭配IF或IF THEN DELETE去篩選特定樣本
當我們欲拷貝的資料集是for特定對象,此時可以搭配IF或IF THEN DELETE去篩選特定樣本。這點跟SPSS裡用滿足條件的方式去篩選樣本有一樣的一致。
Ps.書上較推薦case2的方式,所佔的記憶體容量較小
2.4 複製新的資料集時產生新變數
利用SET產生資料集的過程中,仍可利用一些函數來產生一些需要用到的變項,這一點跟之前在讀取資料的時候順便去做計算的方法一樣。
2.5 SET小結
經過以上的介紹,SET主要用在的情形有2種,一種是當要複製一個資料出來try時而不想動到原資料(較常用),第二則是當我們的樣本分布在不同資料集時所需做的合併!!如果是要處理資料集之間的合併,建議不要處理的太複雜,譬如說兩個資料集中有同一個受訪者,以免資料處理的時候出問題。
留言列表