SAS  /  PC

七、 範  例  七  :  函數  (FUNCTIONS)  及條件敘述  (IF)  的使用

 

程式檔名稱  :  SAMPLE7
DATA CONTROL;
INPUT TREAT $ BONE FAT CARWT;  欄位名稱 TREAT 處理
     BONE 骨重
     FAT 脂肪重
     CARWT 屠體重
IF TREAT >'K' THEN DELETE;  處理代碼大於 K 者刪去該筆資料
IF TREAT='A' THEN CP=10; 利用處理代碼產生新欄位以表示
IF TREAT='B' THEN CP=11; 原來處理組使用飼料之粗蛋白 (CP)
IF TREAT='C' THEN CP=12;  含量
IF TREAT='D' THEN CP=13;
IF TREAT='E' THEN CP=14;
IF TREAT='F' THEN CP=15;
IF TREAT='I' THEN CP=16;
IF TREAT='J' THEN CP=17;
IF TREAT='K' THEN CP=18;
IF CARWT LT 70 THEN DO; 屠體重小於(LT) 70 公斤者,骨重及脂肪重設
 BONE= .;  定為缺值,不進入分析,執行指令至第一個
 FAT= .; END 為止
 END;
ELSE DO;  屠體重大於或等於 70 公斤者(ELSE=NOT IF),
 IF BONE=0 THEN BONE= .;  執行以下指令,至第二個 END 為止。如骨重
 IF FAT=0 THEN FAT= .; 及脂肪重為零者表示漏秤重量,亦設定為缺值
 FATPER=FAT/CARWT; 產生新欄位脂肪百分率(FATPER) 及骨重百分率
 BONEPER=BONE/CARWT;  (BONEPER)
 FATSQR=SQRT(FATPER); 將脂重百分率開根號,產生新欄位 FATSQR
 FATACS=ARSIN(FATSQR);  將 FATSQR 取 ARCSINE,產生新欄位 FATACS
 BONEPER=BONEPER*100;  將骨重百分率 * 100 轉換為 % 表示
 LOGBON=LOG10(BONEPER);  將骨重百分率計算以 10 為底之 LOG 值
END;
CARDS;
A 5.9 15.0 65.3 原始資料集輸入
B

6.7

14.3 87.2
C 7.1 12.4 98.9
D 5.9 14.3 99.4
E 4.8 13.2 95.2
F 5.9 0.0 94.5
G 0.0  17.5 96.8
H 7.9 12.6 97.5
I 5.8 18.7 98.5
J 6.9 15.8 86.4
K 5.5 14.4 95.8
L 6.4 16.3 94.5
M 7.3 17.2 95.9
RUN;

 

 

產生資料集

 

 

PROC PRINT NOOBS;  將各項控制、運算後所產生的新資料集印出
RUN; (表 7-1)

 表 7-1

TREAT

BONE

FAT

CARWT

CP

FATPER

BONEPER

FATSQR

FATACS

LOGBON

A

65.3 

10

 .

B

6.7

14.3

87.2

11

0.16399

7.68349

0.40496

0.41693

0.88556

C

7.1 

12.4

98.9 

12

0.12538 

7.17897

0.35409 

0.36194

0.85606

D

5.9

14.3 

99.4

13

0.14386

5.93561

0.37929

0.38903

0.77347

E

4.8

13.2

95.2 

14

0.13866

5.04202

0.37236

0.38156 

0.70260

F

5.9

 .

94.5

15

 .

6.24339

.

 . 

0.79542

G

 . 

17.5

96.8

.

0.18079

.

0.42519

0.43917

 .

H

7.9

12.6

97.5

.

0.12923

8.10256

0.35949

0.36772

0.90862

I

5.8

18.7 

98.5

16

0.18985

5.88832

0.43572

0.45083

0.76999

J

6.9

15.8

86.4

17

0.18287

7.98611

0.42763

0.44187

0.90234

K

5.5

14.4

95.8

18

0.15031

5.74113

0.38770

0.39814

0.75900