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 运算符