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.
SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!
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.