You can use the UPDATE statement within PROC SQL in SAS to update the values in one or more columns of dataset.
Here are the most common ways to use the UPDATE statement in practice:
Method 1: Update Values in Column Based on One Condition
proc sql;
update my_data
set var1='new_value'
where var1='old_value';
quit;
Method 2: Update Values in Column Based on Multiple Conditions
proc sql;
update my_data
set var1 =
case when var1>25 then 100
when var1>20 then 50
else 0
end;
quit;
The following examples show how to use each method in practice with the following dataset in 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;
Example 1: Update Values in Column Based on One Condition
We can use the following UPDATE statement within PROC SQL to update each of the values in the team column to be ‘Atlanta’ where the existing values are equal to ‘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;
Notice that each value in the team column that used to be equal to ‘A’ is now equal to ‘Atlanta.’
Any values that were not equal to ‘A’ in the team column were simply left unchanged.
Example 2: Update Values in Column Based on Multiple Conditions
We can use the following UPDATE statement within PROC SQL to update each of the values in the points column based on several conditions:
/*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;
We used the UPDATE statement along with a CASE WHEN statement to update the values in the points column.
In particular:
- If the existing value in the points column was greater than 25, we updated it to be 100.
- Else, if the existing value in the points column was greater than 20, we updated it to be 50.
- Else, we updated the value in the points column to be 0.
Note that we only used three conditions in the CASE WHEN statement but you can use as many conditions as you’d like.
Additional Resources
The following tutorials explain how to perform other common tasks in SAS:
SAS: How to Use LIKE Operator in PROC SQL
SAS: How to Use the IN Operator in PROC SQL
SAS: How to Use the WHERE Operator in PROC SQL