SAS中的运算符是在数学,逻辑或比较表达式中使用的符号。 这些符号内置到SAS语言中,并且许多运算符可以组合在单个表达式中以给出最终输出。
以下是SAS运算符类别的列表。
- 算术运算符
- 逻辑运算符
- 比较运算符
- 最小/最大运营商
- 连接运算符
我们逐一观察。 运算符总是与作为由SAS程序分析的数据的一部分的变量一起使用。
算术运算符
下表介绍了算术运算符的详细信息。 让我们假设分别具有值8和4的两个数据变量V1和V2。
操作者 | 描述 | 例 |
---|---|---|
+ | 加成 | V1 + V2 = 12 |
- | 减法 | V1-V2 = 4 |
* | 乘法 | V1 V2 * 32 = |
/ | 师 | V1 / V2 = 2 |
** | 幂 | V1 V2 ** = 4096 |
例
DATA MYDATA1; input @1 COL1 4.2 @7 COL2 3.1; Add_result = COL1+COL2; Sub_result = COL1-COL2; Mult_result = COL1*COL2; Div_result = COL1/COL2; Expo_result = COL1**COL2; datalines; 11.21 5.3 3.11 11 ; PROC PRINT DATA=MYDATA1; RUN;
在运行上面的代码,我们可以得到下面的输出。
逻辑运算符
下表描述了逻辑运算符的详细信息。 这些运算符计算表达式的Truth值。 因此,逻辑运算符的结果总是1或0.我们假设两个数据变量V1和V2分别具有值8和4。
操作者 | 描述 | 例 |
---|---|---|
& | AND运算符。 如果两个数据值都为真,则结果为1,否则为0。 | (V1> 2 V2> 3)给出了0。 |
| | OR运算符。 如果任何一个数据值求值为真,则结果为1,否则为0。 | (V1> 9 V2> 3)为1。 |
〜 | NOT运算符。 NOT运算符以值为FALSE或缺少值的表达式形式的结果为1,否则为0。 | NOT(V1> 3)为1。 |
例
DATA MYDATA1; input @1 COL1 5.2 @7 COL2 4.1; and_=(COL1 > 10 & COL2 > 5 ); or_ = (COL1 > 12 | COL2 > 15 ); not_ = ~( COL2 > 7 ); datalines; 11.21 5.3 3.11 11.4 ; PROC PRINT DATA=MYDATA1; RUN;
在运行上面的代码,我们可以得到下面的输出。
比较运算符
下表描述了比较运算符的详细信息。 这些运算符比较变量的值,结果是真值,1表示TRUE,0表示False。 让我们假设分别具有值8和4的两个数据变量V1和V2。
操作者 | 描述 | 例 |
---|---|---|
= | EQUAL运算符。 如果两个数据值相等,则结果为1,否则为0。 | (V1 = 8)给出1。 |
^ = | NOT EQUAL运算符。 如果两个数据值不相等,则结果为1,否则为0。 | (V1 ^ = V2)给出1。 |
< | LESS THAN运算符。 | (V2 <V2)提供1。 |
<= | 小于或等于运算符。 | (V2 <= 4)给出1。 |
> | 大于运算符。 | (V2> V1)给出1。 |
> = | 大于或等于运算符。 | (V2> = V1)给出0。 |
在 | IN运算符。 如果变量的值等于给定值列表中的任何一个值,则返回1 else否则返回0。 | V1在(5,7,9,8)给出1。 |
例
DATA MYDATA1; input @1 COL1 5.2 @7 COL2 4.1; EQ_ = (COL1 = 11.21); NEQ_= (COL1 ^= 11.21); GT_ = (COL2 => 8); LT_ = (COL2 <= 12); IN_ = COL2 in( 6.2,5.3,12 ); datalines; 11.21 5.3 3.11 11.4 ; PROC PRINT DATA=MYDATA1; RUN;
在运行上面的代码,我们可以得到下面的输出。
最小/最大运算符
下表描述了最小/最大运算符的详细信息。 这些运算符比较一行中变量的值,并返回行中的值列表中的最小值或最大值。
操作者 | 描述 | 例 |
---|---|---|
MIN | MIN运算符。 它从行中的值列表返回最小值。 | MIN(45.2,11.6,15.41)给出了11.6 |
MAX | MAX操作符。 它从行中的值列表返回最大值。 | MAX(45.2,11.6,15.41)给出了45.2 |
例
DATA MYDATA1; input @1 COL1 5.2 @7 COL2 4.1 @12 COL3 6.3; min_ = MIN(COL1 , COL2 , COL3); max_ = MAX( COL1, COl2 , COL3); datalines; 11.21 5.3 29.012 3.11 11.4 18.512 ; PROC PRINT DATA=MYDATA1; RUN;
在运行上面的代码,我们可以得到下面的输出。
连接运算符
下表描述了Concatenation运算符的详细信息。 此运算符连接两个或多个字符串值。 返回单个字符值。
操作者 | 描述 | 例 |
---|---|---|
|| | 连接运算符。 它返回两个或多个值的连接。 | 'Hello'||'World' 输出 Hello World |
例
DATA MYDATA1; input COL1 $ COL2 $ COL3 $; concat_ = (COL1 || COL2 || COL3); datalines; Tutorial s point simple easy learning ; PROC PRINT DATA=MYDATA1; RUN;
在运行上面的代码,我们可以得到下面的输出。
运算符优先级
运算符优先级表示复杂表达式中存在的多个运算符的求值顺序。 下表描述了一组运算符中的优先顺序。
组 | 顺序 | 符号 |
---|---|---|
第一组 | 右到左 | ** + - NOT MIN MAX |
第二组 | 左到右 | * / |
第三组 | 左到右 | + - |
第四组 | 左到右 | || |
第五组 | 左到右 | <<= => => |