Leo Yeh's Blog

SAS 證照考試 (10)

教學目標

初步了解 SAS 9 初階程式設計師認證考試範例考題的重點。

重點概念

SAS 官方網站則有提供範例題目讓我們準備 SAS 9 初階程式設計師認證考試有個方向,本篇先了解第八題可能的學習重點。在 SAS 軟體中有能力使用陣列簡化撰寫的 SAS 程式,以利提高 SAS 程式的可讀性,請注意要先了解陣列基本概念,這時了解此題目就非常實用。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
DATA WORK.sales;
INPUT SalesID $ SalesJan FebSales MarchAmt;
DATALINES;
W6790 50 400 350
W7693 25 100 125
W1387 . 300 250
;
RUN;

DATA WORK.qtr1;
SET WORK.sales;
ARRAY month{3} SalesJan FebSales MarchAmt;
Qtr1 = SUM(of month{*});
RUN;

PROC PRINT;
RUN;

輸出結果

Obs SalesID SalesJan FebSales MarchAmt Qtr1
1 W6790 50 400 350 800
2 W7693 25 100 125 250
3 W1387 . 300 250 550

上述 SAS 程式主要是透過 month 陣列對應三個月份不同的銷售金額,其中每個月份的變數名稱皆不同,一月是 SalesJan、二月是 FebSales、三月是 MarchAmt,因此在 SAS 中的陣列主要可以將不同變數名稱整合成統一陣列名稱,以利進要 SUM 函數進行加總計算,其中 SUM 函數主要會針對非遺漏值的數值變數進行加總,所以 W1387 產品僅會加總二月銷售金額 300 和三月銷售金額 250 ,加總銷售金額為 550,當然我們還可以透過不同函數進行計算,像是 MEAN 函數計算平均、MIN 函數計算最小值、MAX 函數計算最大值。此外我們會搭配 OF 和 {*} 代表取得所有陣列的數值,請注意沒有 {ALL} 的表示方式,其中 ALL 被當成變數名稱發生錯誤。請注意我們會透過 ARRAY 敘述宣告陣列,若是後面沒有接對應的變數,此時則新建變數,初始值為遺漏值。

至於若是我們使用 Qtr1 = SUM(of month{3}); 敘述則結果僅會加總第三個月的數值。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
DATA WORK.sales;
INPUT SalesID $ SalesJan FebSales MarchAmt;
DATALINES;
W6790 50 400 350
W7693 25 100 125
W1387 . 300 250
;
RUN;

DATA WORK.qtr1;
SET WORK.sales;
ARRAY month{3} SalesJan FebSales MarchAmt;
Qtr1 = SUM(of month{3});
RUN;

PROC PRINT;
RUN;

輸出結果

Obs SalesID SalesJan FebSales MarchAmt Qtr1
1 W6790 50 400 350 350
2 W7693 25 100 125 125
3 W1387 . 300 250 250

然而若是我們使用 Qtr1 = month{1} + month{2} + month{3}; 敘述則結果雖然會加總三個月的數值,但若遇到遺漏值,則結果會為遺漏值。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
DATA WORK.sales;
INPUT SalesID $ SalesJan FebSales MarchAmt;
DATALINES;
W6790 50 400 350
W7693 25 100 125
W1387 . 300 250
;
RUN;

DATA WORK.qtr1;
SET WORK.sales;
ARRAY month{3} SalesJan FebSales MarchAmt;
Qtr1 = month{1} + month{2} + month{3};
RUN;

PROC PRINT;
RUN;

輸出結果

Obs SalesID SalesJan FebSales MarchAmt Qtr1
1 W6790 50 400 350 350
2 W7693 25 100 125 125
3 W1387 . 300 250 .

總結 SAS 9 初階程式設計師需要有能力使用陣列簡化撰寫的 SAS 程式,以利提高 SAS 程式的可讀性,因此範例題目第八題其實很實用。

相關資源

⬅️ Go back