-----------------------------------------------------------------------------------------------------------------------接續
五、超級變變變(資料轉換)
有時候資料需作一些轉換,像是重新分組、反向計分、資料合併、刪除變數或資料等等,此時有一些語法就可以派上用場。
1.運算元
2.IF………….THEN(根據某條件做一件事)
IF指令常用於資料合併的時候,範例如下,如果age小於20,age_g等於1,如果age介於20~40間,age_g等於2,其他的age則age_g等於3
IF age < 20 ThEN age_g = 1;
IF 20<< span>40 THEN age_g = 2;
ELSE IF =3;
RUN;
3.IF .THEN DO; END;(根據某條件做很多事)像是設定虛擬變數
IF Edu=1 THEN DO ; D1 = 0; D2 = 0 ; D3 = 0; END;
IF Edu=2 THEN DO ; D1 = 1; D2 = 0 ; D3 = 0; END;
IF Edu=3 THEN DO ; D1 = 0; D2 = 1 ; D3 = 0; END;
IF Edu=4 THEN DO ; D1 = 0; D2 = 0 ; D3 = 1; END;
RUN;
4.IF THEN ; ELSE IF THEN; ELSE(排除前一個條件後,根據下一個條件做一件事)
IF age=1 THEN age_g=1;
ELSE IF age=2 or age=3 THEN age_g=2;
ELSE age_g=3;
RUN;
六、它的去留由你決定(資料變更的語法)
(1)DROP var(宣告欲排除此變數,表示DEMO2不會有age這個變項)
DATA DEMO2 ;
SET DEMO ;
DROP = age
RUN;
(2)KEEP var(宣告欲保留此變數,表示DEMO2只會有age這個變項)
DATA DEMO2 ;
SET DEMO ;
DROP = age
RUN;
(3)DELETE(宣告在某一條件下,將資料刪除)
DATA DEMO2 ;
SET DEMO ;
IF age = 2 THEN DELETE;
RUN;
七、合體I(SET資料變數縱向合併)
SET用於創造一個一模一樣的資料集,使你在做資料轉換時不會將原資料覆蓋,範例如下,在範例中是指要建立一個資料集DEMO2,而這個DEMO2是由DEMO複製過來的,而且可加上資料變更的語法,建立自己所需要的資料集。
DATA DEMO2 ;
SET DEMO ;
KEEP ID age;
RUN;
另外SET可用來合併多筆資料集
DATA DEMO3 ;
SET DEMO1 DEMO2 ;
RUN;
八、合體II(MERGE資料受試者橫向合併)
以下範例是指資料集(CASE3)藉由著變項ID,連結CAES1與CASE2資料集。
DATA CASE3 ;
MERGE CASE1 CASE2 ;
BY ID ;
PROC PRINT ;
RUN ;
九、像秀髮一樣柔順(資料排序SORT)
資料集DEMO依性別作排序
DATA DEMO ;
INPUT sex WEIGHT ;
CARDS ;
1 68
2 61
2 63
1 68
1 69
2 65
1 72
;
PROC SORT DATA=DEMO ;
BY sex ;
PROC PRINT DATA=DEMO;
RUN ;
十、廬山真面目(資料列印)
完成資料處裡後,我們通常都會想看資料整理的如何,因此需要利用此語法,將資料集列印在OUTPUT。
PRINT的選擇項:【DATA=】宣告要印出的資料集
【ROUND】宣告取整數值
【NOOBS】宣告觀察體號碼不印出
【UNIFORM】宣告所有頁面均以同一格式印出
PRINT的關鍵字:【VAR】宣告要印出的變項
【BY】宣告以特定變數分開列印
DATA CASE;
INFILE 'C:\D001.txt' missover;
INPUT ID $ 1-4 Gend 5 age 6-7 Mar 8 Height 9-14 .1;
MISSING 999;
PROC PRINT DATA=CASE ROUND NOOBS UNIFORM;
TITLE '我是標題' ;
VAR ID age;
BY ID;
RUN;