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.
It's finally time to hack! Remember to visit the SAS Hacker's Hub regularly for news and updates.
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.
Ready to level-up your skills? Choose your own adventure.