BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
tmm
Fluorite | Level 6 tmm
Fluorite | Level 6

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

1 ACCEPTED SOLUTION

Accepted Solutions
Haikuo
Onyx | Level 15

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;

View solution in original post

7 REPLIES 7
Haikuo
Onyx | Level 15

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;

tmm
Fluorite | Level 6 tmm
Fluorite | Level 6

I get errors saying: expressions using equals (=) has components that are different data types

Haikuo
Onyx | Level 15

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

tmm
Fluorite | Level 6 tmm
Fluorite | Level 6

They are both text fields

Haikuo
Onyx | Level 15

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;

tmm
Fluorite | Level 6 tmm
Fluorite | Level 6

I got it to work by putting ' ' around the 0-4 and it worked

Haikuo
Onyx | Level 15

There you go!

What is Bayesian Analysis?

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.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 7 replies
  • 2298 views
  • 0 likes
  • 2 in conversation