【04】資料魔法|運算式、運算子與運算元的應用

運算式、運算子與運算元
能用來建立與修改變數的值
運算式能產出字元、數值或布林值

運算式 & 運算子 & 運算元

能用來建立與修改變數的值

運算式能產出字元、數值或布林值


運算式 – Expression

運算子(Operator)運算元(Operand)所組成,並以此組合產出1個值,這個值可以是文字型變數、數值型變數或是布林值。

運算式能用在建立新變數、賦予新值或條件式敘述句等,如果將含運算子的運算式用來作為新變數的值時,運算式成立會回傳1、不成立回傳0,文章最後會常使用的運算式實例以更加了解實際用法。

僅由1個運算子組成的運算式

有以下3種類型:

常數(Constant)、變數(Variable)、函數(Function)

由多個運算子所組成的運算式

當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)
In的值可以放入文字型清單,例如:Animals in (“Bird”, “CAT”, “Dog”)
邏輯運算子 – Logical Operator

另一個最常聽到的稱呼是布林值(Boolean Values),通常用來連結比較或算數運算子

&ANDMe & My broken heart
|、!ORA OR B
^、~NOT^(b<4)
字串運算子 – Concatenation Operator

用來連接兩個字串

||、!!“I” || “Like” || “You”
※在SAS中,字串的值在表達式操作時,皆需以雙引號或單引號括起來
特殊運算子 – Max、Min Operator

不在前面所提分類的運算子

<>取最大值後回傳5<>2
><取最小值後回傳.><0
※在SAS中,遺漏值(.)在比較大小時,小於所有數值

運算子執行順序

以下依照優先順利梯次列出:

  1. **(乘冪)、+(正號)、-(負號)、NOT、><(最小值)、<>(最大值)
  2. *(乘法)、/(除法)
  3. +(加法)、-(減法)
  4. 字串運算子
  5. <(小於)、<=(小於等於)、=(等於)、^=(不等於)、>=(大於等於)、>(大於)、In
  6. &(AND)
  7. |(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*


資料來源:

SAS Expressions

SAS Operators

SAS Operators in Expressions

謝謝閱讀這篇文章,有問題歡迎在下方留言

Categories: Basic