Creating new variables with many if statements - How to shorten it?

Reply
Occasional Contributor
Posts: 9

Creating new variables with many if statements - How to shorten it?

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;

Respected Advisor
Posts: 4,779

Re: Creating new variables with many if statements - How to shorten it?

Posted in reply to UCFtigers2017

@UCFtigers2017

You certainly should use ELSE as well.

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

Trusted Advisor
Posts: 1,387

Re: Creating new variables with many if statements - How to shorten it?

Posted in reply to UCFtigers2017

 

 

 

    resultsnum=indexc('FDCBA',results)-1;
    if resultsnum<0 then resultsnum=.;
PROC Star
Posts: 269

Re: Creating new variables with many if statements - How to shorten it?

Posted in reply to UCFtigers2017

@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;
Ask a Question
Discussion stats
  • 3 replies
  • 189 views
  • 5 likes
  • 4 in conversation