Sas:如何在 proc sql 中使用 if 语句


虽然在 SAS 的PROC SQL中无法使用IF语句,但可以使用CASE运算符来定义变量根据某些条件应取的值。

以下示例展示了如何在实践中使用CASE运算符,并使用 SAS 中的以下数据集(其中包含有关各种篮球运动员的信息):

 /*create dataset*/
data my_data;
    input team $points;
    datalines ;
Cavs 12
Cavs 14
Warriors 15
Hawks 18
Mavs 31
Mavs 32
Mavs 35
Celtics 36
Celtics 40
;
run ;

/*view dataset*/
proc print data =my_data;

示例 1:使用只有两个结果的 CASE 运算符

我们可以使用PROC SQL中的CASE运算符在数据集中生成一个名为points_flag的新列,如果列中的值小于 20,则该列的值为 0,否则值为 1:

 /*create new column called points_flag using case operator*/ 
proc sql ;
  select *,
box 
      when points < 20 then 0 else 1
      end as points_flag
from my_data;
quit ; 

请注意,如果points列的值小于20,则points_flag列的值为0,否则为1。

示例 2:使用具有两个以上结果的 CASE 运算符

我们还可以使用PROC SQL中的CASE运算符在数据集中生成一个名为points_flag的新列,如果列中的值小于20,则该列的值为0;如果点小于35,则该列的值为1,或值为 2,否则:

 /*create new column called points_flag using case operator*/ 
proc sql ;
  select *,
      box 
      when points < 20 then 0
when points < 35 then 1 else 2
      end as points_flag
      from my_data;
quit ; 

请注意, points_flag列采用值 0、1 或 2,具体取决于列中的相应值。

注意:您可以随意使用任意数量的when语句,以便在新列中生成任意数量的不同值。

其他资源

以下教程解释了如何在 SAS 中执行其他常见任务:

SAS:如何在 PROC SQL 中使用 WHERE 运算符
SAS:如何在 PROC SQL 中使用 IN 运算符
SAS:如何在 PROC SQL 中使用 UPDATE
SAS:如何在 PROC SQL 中使用 CONTAINS

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注