Can you help me please immediately

Reply
New Contributor
Posts: 2

Can you help me please immediately

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 ?

Respected Advisor
Posts: 3,063

Re: Can you help me please immediately

[ Edited ]

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...Smiley Happy

 

Perhaps something like: SAS Coding Question

 

SAS Employee
Posts: 24

Re: Can you help me please immediately

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;
Valued Guide
Posts: 763

Re: Can you help me please immediately

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

 

Contributor hbi
Contributor
Posts: 66

Re: Can you help me please immediately

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;

 

Valued Guide
Posts: 763

Re: Can you help me please immediately

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

 

Contributor hbi
Contributor
Posts: 66

Re: Can you help me please immediately

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. 

Ask a Question
Discussion stats
  • 6 replies
  • 472 views
  • 0 likes
  • 5 in conversation