BookmarkSubscribeRSS Feed
UCFtigers2017
Fluorite | Level 6

I want a new variable that contains the number version of their grade. How can I can I do this with less code?

 

data students5 ;
set students4 ;
if results = 'A' then resultsNum = 4 ;
if results = 'B' then resultsNum = 3 ;
if results = 'C' then resultsNum = 2 ;
if results = 'D' then resultsNum = 1 ;
if results = 'F' then resultsNum = 0 ;
run;

3 REPLIES 3
Patrick
Opal | Level 21

@UCFtigers2017

You certainly should use ELSE as well.

As an alternative: Create a format and then use this format on your variable result.

mkeintz
PROC Star

 

 

 

    resultsnum=indexc('FDCBA',results)-1;
    if resultsnum<0 then resultsnum=.;
--------------------------
The hash OUTPUT method will overwrite a SAS data set, but not append. That can be costly. Consider voting for Add a HASH object method which would append a hash object to an existing SAS data set

Would enabling PROC SORT to simultaneously output multiple datasets be useful? Then vote for
Allow PROC SORT to output multiple datasets

--------------------------
s_lassen
Meteorite | Level 14

@UCFtigers2017:

Unless you can shorten the code to a formula, as suggested by mkeintz, I would consider using a SELECT statement here:

 

data students5 ;
  set students4 ;
  select(results);
    when('A') resultsNum = 4 ;
    when('B') resultsNum = 3 ;
    when('C') resultsNum = 2 ;
    when('D') resultsNum = 1 ;
    when('F') resultsNum = 0 ;
    otherwise;
    end;
run;

Or you could use an informat:

proc format;
  invalue graden
    'A'=4
    'B'=3
    'C'=2
    'D'=1
    'F'=0
    other=.;
run;

data students5;
  set students4;
  resultsNum=input(results,graden.);
run;

Catch up on SAS Innovate 2026

Nearly 200 sessions are now available on demand with the SAS Innovate Digital Pass.

Explore Now →
How to Concatenate Values

Learn how use the CAT functions in SAS to join values from multiple variables into a single value.

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
  • 3 replies
  • 1947 views
  • 5 likes
  • 4 in conversation