Hello,
I have this question " Create a new variable called project2 and add 10 points to the project grade of the following students A,B,C,D (keep the grades of other students same)"
Can you please help me out ?
Something similar to this:
if student in ('A', 'B', 'C') then grade = grade + 10;
BTW, it would be helpful if you summarised your problem in the title rather than ask for help because that applies to most posters...
Perhaps something like: SAS Coding Question
I partially agree with SASKiwi's answer except that the grade variable will be over written and you asked for a new variable. Therefore I suggest:
if student in ('A', 'B', 'C') then project2 = project + 10;
Hi, another idea ...
data x;
input student :$1. grade @@;
datalines;
A 50 B 60 C 70 D 33
;
data y;
set x;
grade + 10*(student in ('A' 'B' 'C'));
run;
data set Y ...
Obs student grade
1 A 60
2 B 70
3 C 80
4 D 33
Here is a slight variation of Mike's example. This one handles missing values.
data x;
input student $ grade;
datalines;
A 50
B 60
C .
D 33
;
run;
data y;
set x;
if student in ('A','B','C','D') then project2 = sum(grade, 10);
run;
Hi, the SUM statement also ignores mising values.
data x;
input student :$1. grade @@;
datalines;
A 50 B 60 C . D 33
;
data y;
set x;
grade + 10*(student in ('A' 'B' 'C'));
run;
data set Y ..
Obs student grade
1 A 60
2 B 70
3 C 10
4 D 33
You are right ... the boolean statement student in ('A' 'B' 'C') evaluates to 1; thus, for student 'C', 1*10 = 10.
In short, the sum operator (+) used in conjunction with the product of a boolean result would result in a non-missing value.
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 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.