運算式 & 運算子 & 運算元
能用來建立與修改變數的值
運算式能產出字元、數值或布林值
Contents
運算式 – Expression
由運算子(Operator)與運算元(Operand)所組成,並以此組合產出1個值,這個值可以是文字型變數、數值型變數或是布林值。
運算式能用在建立新變數、賦予新值或條件式敘述句等,如果將含運算子的運算式用來作為新變數的值時,運算式成立會回傳1、不成立回傳0,文章最後會常使用的運算式實例以更加了解實際用法。
Simple Expression
僅由1個運算子組成的運算式
有以下3種類型:
常數(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;
問答時間到囉!
🙋🙋♂️試問,第1筆觀察值中A的值為?
💡請反白*答案是:1*
🙋🙋♂️試問,第2筆觀察值中B的值為?
💡請反白*答案是:45*
🙋🙋♂️試問,第1筆觀察值中C的值為?
💡請反白*答案是:0*
🙋🙋♂️試問,第2筆觀察值中D的值為?
💡請反白*答案是:My Favorite Animal is Cat*
🙋🙋♂️試問,第1筆與第3筆觀察值中E的值為?
💡請反白*答案都是:5*
資料來源:
謝謝閱讀這篇文章,有問題歡迎在下方留言