Sas:如何在 proc sql 中使用 update


您可以使用SAS中PROC SQL中的UPDATE语句来更新数据集中的一列或多列中的值。

以下是实践中使用UPDATE语句的最常见方法:

方法一:根据条件更新列中的值

 proc sql ;
    update my_data
    set var1='new_value'
    where var1='old_value';
quit ;

方法二:根据多个条件更新列中的值

 proc sql ;
    update my_data
    set var1 = 
    case when var1> 25 then 100
    when var1> 20 then 50
    else 0
    end;
quit ;

以下示例展示了如何在 SAS 中的以下数据集上实际使用每种方法:

 /*create dataset*/
data my_data;
    input team $position $points;
    datalines ;
A Guard 22
A Guard 20
A Guard 30
A Forward 14
A Forward 11
B Guard 12
B Guard 22
B Forward 30
B Forward 9
B Forward 12
B Forward 25
;
run ;

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

示例1:根据条件更新列中的值

我们可以在PROC SQL中使用以下UPDATE语句将每个 team 列值更新为“Atlanta”,其中现有值等于“A”:

 /*update values in team column where team is equal to 'A'*/
proc sql ;
    update my_data
    set team='Atlanta'
    where team='A';
quit ;

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

请注意,团队列中之前等于“A”的每个值现在等于“Atlanta”。

团队列中任何不等于“A”的值都保持不变。

示例2:根据多个条件更新列中的值

我们可以在PROC SQL中使用以下UPDATE语句根据几个条件更新points列中的每个值:

 /*update values in points column based on multiple conditions*/
proc sql ;
    update my_data
    set points = 
    case when points> 25 then 100
    when points> 20 then 50
    else 0
    end;
quit ;

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

我们使用带有CASE WHEN语句的UPDATE语句来更新点列中的值。

尤其:

  • 如果点列中的现有值大于 25,我们将其更新为100
  • 否则,如果点列中的现有值大于 20,我们会将其更新为50
  • 否则,我们将点列中的值更新为0

请注意,我们在CASE WHEN语句中仅使用了三个条件,但您可以根据需要使用任意多个条件。

其他资源

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

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

添加评论

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