
【04】資料魔法|運算式、運算子與運算元的應用
目錄
運算式 – Expression
由運算子 (Operator) 與運算元 (Operand) 所組成,並以此組合產出 1 個值,這個值可以是文字型變數、數值型變數或是布林值。
運算式能用在建立新變數、賦予新值或條件式敘述句等。如果將含運算子的運算式用來作為新變數的值時,運算式成立會回傳 1、不成立回傳 0。文章最後會以實例幫助更深入理解運算式的實際用法。
Simple Expression
- 僅由 1 個運算子組成的運算式
- 常數 (Constant)、變數 (Variable)、函數 (Function)
Compound Expression
- 由多個運算子所組成的運算式
- 當 SAS 遇到多個運算子時,依據特定規則來決定執行順序
運算子 – Operator
是一種表示算術、比較、邏輯等的符號 (Symbol),例如:加 (+)、減 (-)、乘 (*)、除 (/);大於 (>)、小於 (<)。
主要分為 2 類運算子:
- Prefix Operators (前綴運算子):最常見的為 + (正)、- (負),用來表示數值的正負。另外,NOT 也是屬於 1 種前綴運算子
- Infix Operators (中綴運算子):可以被夾在中間,並用來與左右兩個進行互動的運算子,依照功能分為以下 5 類
算數運算子 – Arithmetic Operator
執行計算的功能
運算符 | 解析 | 計算結果 |
---|---|---|
+ | 加 | 5 + 7 |
– | 減 | 9 - 2 |
* | 乘 | 2 * 6 |
/ | 除 | 12 / 2 |
** | 乘冪 | 2 ** 3 |
比較運算子 – Comparison Operator
用來比較大小,使用時可以使用符號或是助記符,兩種皆適用。
符號 | 助記符 | 定義 | 範例 |
---|---|---|---|
> | gt | 大於 | Age > 5 |
< | lt | 小於 | Weight lt 180 |
>= | ge | 大於等於 | Height >= 155 |
<= | le | 小於等於 | 51 le 60 |
= | equal | 等於 | No = 5 |
^=、~= | not equal | 不等於 | 5 ^= 9 21 ~= 16 |
In | 等於清單之一 | A in (12, 19, 51) |
邏輯運算子 – Logical Operator
布林值 (Boolean Values),通常用來連結比較或算術運算子。
符號 | 助記符 | 定義 | 範例 |
---|---|---|---|
& | AND | 和 | Me & My broken heart |
|、! | OR | 或 | A OR B |
^、~ | NOT | 非 | ^(b < 4) |
字串運算子 – Concatenation Operator
用來連接兩個字串。
| ||、!! | 串接 | “I” || “Like” || “You” |
特殊運算子 – Max、Min Operator
不在前面所提分類的運算子。
符號 | 定義 | 範例 |
---|---|---|
<> | 取最大值後回傳 | 5 <> 2 |
>< | 取最小值後回傳 | . >< 0 |
運算子執行順序
以下依照優先順序列出:
- (乘冪)、+(正號)、-(負號)、NOT、><(最小值)、<>(最大值)
*
(乘法)、/
(除法)+
(加法)、-
(減法)- 字串運算子
<
(小於)、<=
(小於等於)、=
(等於)、^=
(不等於)、>=
(大於等於)、>
(大於)、In
&
(AND)|
(OR)
但這麼多運算子順序可能會混淆,最簡單的方法是使用括號 ( ),在 SAS 中,括號內的運算式會先執行,這樣就能避免混淆哪些運算子應該先執行。
運算元 – Operand
可以是常數、數值型變數、文字型變數。
實例
Data sample;
input Age Height Weight Animal $;
cards;
5 65 80 Dog
1 45 26 Cat
7 35 67 Bird
;
Data Question;
set sample;
A = Age < (2**3);
B = Height;
C = Animal NE "Dog";
D = "My " || "Favorite " || "Animal " || "is " || Animal;
E = 5 <> 1;
run;
Q:第1筆觀察值中A的值為?
Ans:1
Q:第2筆觀察值中B的值為?
Ans:45
Q:第1筆觀察值中C的值為?
Ans:0
Q:第2筆觀察值中D的值為?
Ans:My Favorite Animal is Cat
Q:第1筆與第3筆觀察值中E的值為?
Ans:5;5