I am really not doing this right. I have this code
proc sql;
update table
set ((desc = n/a if cd is null) and (cd = 0 if desc = n/a) and
(desc = minor if cd = 1) and (desc = moderate if cd =2) and
(desc = major if cd = 3) and (desc = extreme if cd = 4));
run;
I think my code is just not right
Try this:
proc sql;
update table yourtablename
set desc=
case
when cd is null
then 'n/a'
when cd=1
then 'minor'
when cd=2
then 'moderate'
when cd=3
then 'major'
when cd=4
then 'extreme'
else 'others'
end;
update table want
set cd=0 where desc='n/a';
quit;
Try this:
proc sql;
update table yourtablename
set desc=
case
when cd is null
then 'n/a'
when cd=1
then 'minor'
when cd=2
then 'moderate'
when cd=3
then 'major'
when cd=4
then 'extreme'
else 'others'
end;
update table want
set cd=0 where desc='n/a';
quit;
I get errors saying: expressions using equals (=) has components that are different data types
You need to let us know the variable type of your variables: cd and desc. is 'cd' numeric?
You find the info by running:
1. proc sql;
describe table yourtablename;
quit;
or
2. proc contents data=your tablename;
run;
After knowing the types of your variables, you will be able to make changes.
Regards,
Haikuo
They are both text fields
Well, then:
proc sql;
update table yourtablename
set desc=
case
when cd is null
then 'n/a'
when strip(cd)='1'
then 'minor'
when strip(cd)='2'
then 'moderate'
when strip(cd)='3'
then 'major'
when strip(cd)='4'
then 'extreme'
else 'others'
end;
update table want
set cd='0' where desc='n/a';
quit;
I got it to work by putting ' ' around the 0-4 and it worked
There you go!
Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 25. Read more here about why you should contribute and what is in it for you!
Learn the difference between classical and Bayesian statistical approaches and see a few PROC examples to perform Bayesian analysis in this video.
Find more tutorials on the SAS Users YouTube channel.