10-12-2017 03:52 PM
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 ;
10-12-2017 04:05 PM
You certainly should use ELSE as well.
As an alternative: Create a format and then use this format on your variable result.
10-13-2017 04:05 AM
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;