結合SAS Data Set
結合SAS Data Set
- One-to-one merging (應該改很少用 @@)
- 新資料檔有所有的變項,兩資料檔的數據依序進入 PDV,因此相同變項時,第1資料檔會被覆寫,保留第 2資料檔的數據。
- Observation 只留「最少」資料檔的筆數。PDV 會進第1資料檔的第3筆,但是讀第2資料檔時會遇到 end-of-file,PDV就停止進資料,也不會輸出到新檔案中。
- 用 Set
- Data ab ;
set a ;
set b ;
run;
- Data-set-A
Num X
1 10
2 15
3 20
- Data-set-B
Num Y
11 6
13 12
- Combined Data-set
Num X Y
11 10 6
13 15 12
- Data ab ; Merge a b; 則是會保留「最多」的Observation。
- Concatenating 垂直連接,成為新資料檔
- 新資料檔有所有的變項,也有所有的 Observation
- 同變項,要有相同的 attribute,若是 type 不同( NUM 與 Char) 會有 Error;若是同屬性,但length, Label, format, informat 不同,會以先讀入的為主。
- 用 SET
- Data ab ;
set a b;
run;
- Data-set-A
Num X
1 10
2 15
3 20
- Data-set-B
Num Y
11 6
13 12
- Combined Data-set
Num X Y
1 10 .
2 15 .
3 20 .
11 . 6
13 . 12
- Appending 附加,以原來 BASE為主,加在尾部
- PROC APPEND
BASE=Base-data-set DATA=Second-data-set FORCE;
RUN;
- 將 Second-data-set 的數據是加在 Master( Base) data-set 的尾部,沒有產生新 data-set,也不去讀取 Master( Base) data-set。
- 一次 Procedure 只能處理 2 個資料檔,Base 與 Second。
- 若 Second-data-set 的變項 有下列情況,要用 FORCE option;
- 有新的變項,不在 Base-data-set 裡
- 同名變項 的 type 不同, length 不同。
- 維持 Base 的type, Second-data-set的數據變missing;
維持 Base 的Length,Second-data-set的數據被刪截;
- Interleaving 插入數據 ( Concatenating 加入 BY )
- 所有資料必須先 Sort in Ascending order.
- Set, By
Data ab ; set a b ; by num; run;
- Data-set-A
Num X
1 10
2 15
3 20
- Data-set-B
Num X Y
1 6 6
3 12 12
- Combined Data-set
Num X Y
1 10 .
1 6 6
2 15 .
3 20 .
3 12 12
- Match-merging
- MERGE, BY
- 最好都先排序成 Ascending order,By值是missing排在頂,Execution Phase: PDV會依照BY值序順進行比對。
- 變項屬性以第 1個資料檔為主,但變項值則會被後到的資料 overwritten。
- 變項改名字
- Data-set ( RENAME= ( old-variable-name=new-variable-name ) )
- Excluding Unmatched Observations
- (IN= data set option) 與 If statement,產生 temp_a, temp_b 兩個 temporary variable,再利用 If statement 進行篩選所要輸出的資料檔
- 全部資料都留
Data Mab ;
merge a ( in= temp_a) b ( in=temp_b rename=(x=new_x) );
by Num;
If temp_a or temp_b ; *或者不寫 If statement;
run;
- 只留完全 match ,AB兩資料檔都有的,把 if 段改如下
If temp_a and temp_b ;
或者
If temp_a =1 and temp_b =1 ;
- 保留只在 A 或是 只在 B的
If temp_a ;
If temp_b ;
沒有留言:
張貼留言