SAS 运算符



SAS 中的运算符是一个符号,用于数学、逻辑或比较表达式。这些符号是内置于 SAS 语言中的,许多运算符可以组合在一个表达式中以给出最终输出。

以下是 SAS 运算符类别的列表。

  • 算术运算符
  • 逻辑运算符
  • 比较运算符
  • 最小/最大运算符
  • 连接运算符

我们将逐一查看每个运算符。运算符始终与作为 SAS 程序分析的数据一部分的变量一起使用。

算术运算符

下表描述了算术运算符的详细信息。让我们假设有两个数据变量V1V2,其值分别为84

运算符 描述 示例
+ 加法 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;

运行上述代码后,我们将获得以下输出。

operators_arithmrtic

逻辑运算符

下表描述了逻辑运算符的详细信息。这些运算符评估表达式的真值。因此,逻辑运算符的结果始终为 1 或 0。让我们假设有两个数据变量V1V2,其值分别为84

运算符 描述 示例
& AND 运算符。如果两个数据值都评估为真,则结果为 1,否则为 0。 (V1>2 & V2 > 3) 的结果为 0。
| OR 运算符。如果任何一个数据值评估为真,则结果为 1,否则为 0。 (V1>9 & V2 > 3) 的结果为 1。
~ NOT 运算符。值为 FALSE 或缺失值的表达式的 NOT 运算符结果为 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;

运行上述代码后,我们将获得以下输出。

operators_logical

比较运算符

下表描述了比较运算符的详细信息。这些运算符比较变量的值,结果是真值,TRUE 为 1,FALSE 为 0。让我们假设有两个数据变量V1V2,其值分别为84

运算符 描述 示例
= 等于运算符。如果两个数据值相等,则结果为 1,否则为 0。 (V1 = 8) 的结果为 1。
^= 不等于运算符。如果两个数据值不相等,则结果为 1,否则为 0。 (V1 ^= V2) 的结果为 1。
< 小于运算符。 (V2 < V2) 的结果为 1。
<= 小于或等于运算符。 (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.3
3.11  11.4
;
PROC PRINT DATA = MYDATA1;
RUN;

运行上述代码后,我们将获得以下输出。

operators_comparison

最小/最大运算符

下表描述了最小/最大运算符的详细信息。这些运算符比较一行中变量的值,并返回行中值列表中的最小值或最大值。

运算符 描述 示例
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;

运行上述代码后,我们将获得以下输出。

operators_minmax

连接运算符

下表描述了连接运算符的详细信息。此运算符连接两个或多个字符串值。返回单个字符值。

运算符 描述 示例
|| 连接运算符。它返回两个或多个值的连接。 '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;

运行上述代码后,我们将获得以下输出。

operators_concate

运算符优先级

运算符优先级指示复杂表达式中多个运算符的计算顺序。下表描述了运算符组内的优先级顺序。

顺序 符号
I 组 从右到左 ** + - NOT MIN MAX
II 组 从左到右 * /
III 组 从左到右 + -
IV 组 从左到右 ||
V 组 从左到右 < <= = >= >
广告