SAS中的运算符是用于数学,逻辑或比较表达式的符号.这些符号内置在SAS语言中,许多运算符可以组合在一个表达式中以给出最终输出.
下面是SAS类别的运算符列表.
算术运算符
逻辑运算符
比较运算符
最小/最大操作员
连接操作员
我们将查看每个一个接一个.运算符总是与变量一起使用,这些变量是SAS程序正在分析的数据的一部分.
算术运算符
下表描述算术运算符的细节.假设两个数据变量 V1 和 V2 分别为 8 和 4 .
运算符 | 描述 | 示例 |
---|---|---|
+ | 加法 | V1 + V2 = 12 |
- | 减法 | V1-V2 = 4 |
* | 乘法 | V1 * V2 = 32 |
/ | 分部 | V1/V2 = 2 |
** | Exponentiation | 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.33.11 11;PROC PRINT DATA = MYDATA1;RUN;
在运行上面的代码时,我们得到以下输出.
逻辑运算符
下表描述了逻辑运算符的详细信息.这些运算符评估表达式的真值.所以逻辑运算符的结果总是1或0.让我们假设两个数据变量 V1 和 V2 ,其值 8 和 4 分别.
运算符 | 描述 | 示例 |
---|---|---|
& | AND运算符.如果两个数据值都评估为真,则结果 为1,否则为0. | (V1> 2& V2> 3)给出0. |
| | OR运算符.如果任何一个数据值评估为真,则 结果为1,否则为0. | (V1> 9& V2> 3)为1./td> |
〜 | 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.33.11 11.4;PROC PRINT DATA = MYDATA1;RUN;
在运行上面的代码时,我们得到以下输出.
比较运算符
下表描述了比较运算符的详细信息.这些运算符比较变量的值,结果是1表示TRUE的真值,0表示False.假设两个数据变量 V1 和 V2 分别为 8 和 4 .
运算符 | 描述 | 示例 |
---|---|---|
= | EQUAL运算符.如果两个数据值相等,则结果 为1,否则为0. | (V1 = 8)给出1. |
^ = | NOT EQUAL运算符.如果两个数据值都不相等,则 结果为1,否则为0. | (V1 ^ = V2)给出1. |
< | 少于操作员. | (V2 |
< = | 少于或等于操作员. | (V2 <= 4)给出1. |
> | 大于操作员. | (V2> V1)给出1. |
> = | 大于或等于操作员. | (V2> = V1)给出0. |
IN | IN运算符.如果变量的值等于给定值列表中值的任何一个 ,则返回1,否则返回0. | V1 in(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.33.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.0123.11 11.4 18.512;PROC PRINT DATA = MYDATA1;RUN;
在运行上面的代码时,我们得到以下输出.
连接运算符
下表描述了连接运算符的详细信息.此运算符连接两个或多个字符串值.返回单个字符值.
运算符 | 描述 | 示例 |
---|---|---|
|| | 连接运算符.它返回两个或多个值的串联. | 'Hello'||'World'给出Hello World |
示例
DATA MYDATA1;input COL1 $COL2 $ COL3 $; concat_ = (COL1 || COL2 || COL3);datalines;Tutorial s pointsimple easy learning;PROC PRINT DATA = MYDATA1;RUN;
在运行上面的代码时,我们得到以下输出.
运算符优先级
运算符优先级表示复杂表达式中存在的多个运算符的求值顺序.下表描述了一组运算符中的优先顺序.
组 | 订单 | 符号 |
---|---|---|
第一组 | 权利左 | ** + - NOT MIN MAX |
第二组 | 从左到右 | */ |
第三组 | 从左到右 | + - |
第IV组 | 从左到右 | || |
第V组 | 从左到右 | < < = => => |