Leo Yeh's Blog

SAS 快速入門 (2)

教學目標

撰寫 SAS 程式快速入門之運算式教學,適合對象為沒有學過 SAS 程式,但想學 SAS 程式的使用者。

重點概念

SAS 是一種完整的程式語言,對於使用者來說只需要了解 SAS 敘述就能夠解決資料管理和資料分析的問題。SAS 敘述中會包括運算式,主要是由一系列的運算物件和運算符號形成的指令,將會在執行之後產生一個結果值。

運算物件

首先運算物件主要是變數和常數,所謂常數就是固定的數值、字串和日期與時間,例如: Age >= 18 ,其中 Age 是變數,而 18 是數值常數,可以包括負號和小數點,Gender = ‘F’,其中 Gender 是變數,而 ‘F’ 是字元常數,主要由單引號括起來以 1 ~ 200 個字元所組成。

運算符號

接著運算符號主要有四大類,分別為比較運算符號、算數運算符號、邏輯運算符號和其它運算符號。

比較運算符號

比較運算符號主要是建立兩個物件之間的關係,若成立則結果為 1,若不成立則結果為 0,例如:Age >= 18 代表若 Age 為 20 則結果值為 1,但當 Age 為 16 則結果值為 0。一般來說比較運算符號經常會出現在 IF 敘述中,請參考下述 SAS 程式。

1
IF Age>=18 THEN Adult=1; ELSE Adult=0;
比較運算符號 功能
EQ 或 == 等於
NE 或 ^= 不等於
GT 或 > 大於
LT 或 < 小於
GE 或 >= 大於等於
LE 或 <= 小於等於
IN 在列表中

算術運算符號

算術運算符號主要是數學運算中常用的五種運算符號,分別為次方、乘法、除法、加法和減法。

算術運算符號 功能
** 次方
* 乘法
/ 除法
+ 加法
- 減法

邏輯運算符號

邏輯運算符號主要為連接一系列的比較運算式,主要有三大類,分別為且 (AND)、或 (OR) 和非 (NOT)。

邏輯運算符號 功能
AND 兩個運算式皆為真時結果為 1。
OR 兩個運算式至少一個為真時結果為 1。
NOT 運算式為假時結果為 1。

其它運算符號

其它運算符號主要是不分類在比較、算術和邏輯的運算符號,常見的有最小 (><) 、最大 (<>) 和連接 (||),其中最常使用的是連接運算符號,主要會進行字串的連接,例如:我們通常會需要將客戶的姓 (Last Name) 和名 (First Name) 和在一起變成完整名字 (Full Name),請參考下述 SAS 程式。

1
2
3
4
5
DATA Customer;
FirstName = 'ALICE';
LastName = 'SHIEH';
FullName = FirstName || ' ' || LastName;
RUN;

運算次序

一般來說,在複雜運算式中會有運算次序的準則,主要有三點,分別為:

  1. 括號內的任何運算式必須先運算。
  2. 較高優先順序的運算會先被執行。
  3. 相同優先順序的運算符號,左邊的運算先做。
運算符號優先順序 運算符號 功能
順序一 ** 次方
+ 正數
- 負數
^
>< 最小
<> 最大
順序二 * 乘法
/ 除法
順序三 + 加法
- 減法
順序四 連接運算符號
順序五 比較運算符號
順序六 邏輯運算符號

總結 SAS 敘述中會包括運算式,主要是由一系列的運算物件和運算符號形成的指令,其中運算物件主要是變數和常數,運算符號主要有四大類,分別為比較、算術、邏輯和其它運算符號,看似簡單的應用往往會因為不熟悉如何使用運算符號和運算次序,而導致 SAS 程式運算邏輯錯誤,這點要非常小心。

相關資源

⬅️ Go back