DATA Step, Macro, Functions and more

Data Format/Coding

Accepted Solution Solved
Reply
New Contributor
Posts: 3
Accepted Solution

Data Format/Coding

Hello,

I need someone to help me with recoding my data.

I have 4 variables (MAT, BIO, PHY, CHE). Each of the variable has students scores from 1 - 9, with 9 being the worst score. For example a student in my dataset has a score of 2 in MAT, 3 in BIO, 4 in PHY and 1 in CHE.

What I want to do is create an aggregate variable from the four subjects using the three best grades. In this example, the three best scores are MAT (2), BIO (3) and CHE (1).

Thus, the new variable, which will be called Aggregate Varaible will  AGGREG_VAR = (2+3+1) = 6.

So the score for this student for AGGREG_VAR = 6.

 

PLEASE I NEED HELP IMPLEMENTING THIS IS SAS.

 

THANK YOU.

 

FRANCIS

 


Accepted Solutions
Solution
‎02-20-2017 11:09 PM
PROC Star
Posts: 1,562

Re: Data Format/Coding

  AGGREG_VAR =sum(MAT,BIO,PHY,CHE)-(nmiss(MAT,BIO,PHY,CHE)=0)*max(MAT,BIO,PHY,CHE);

if missing values can exist. Smiley Happy

View solution in original post


All Replies
PROC Star
Posts: 1,562

Re: Data Format/Coding

Like this?

data HAVE;
  MAT=4 ;BIO=3; PHY=2 ;CHE=1;
  AGGREG_VAR =sum( MAT,BIO,PHY,CHE)-max( MAT,BIO,PHY,CHE);
run;

AGGREG_VAR=6

 

Super User
Posts: 17,842

Re: Data Format/Coding

Can you have missing values?

 

Solution
‎02-20-2017 11:09 PM
PROC Star
Posts: 1,562

Re: Data Format/Coding

  AGGREG_VAR =sum(MAT,BIO,PHY,CHE)-(nmiss(MAT,BIO,PHY,CHE)=0)*max(MAT,BIO,PHY,CHE);

if missing values can exist. Smiley Happy

New Contributor
Posts: 3

Re: Data Format/Coding

Hi ChrisNZ,
You're are amazing, and a savior! Thank you. Thank you!!
Francis
PROC Star
Posts: 1,562

Re: Data Format/Coding

You're welcome. Don't forget to finalise the thread by setting the "solution found" flag.

New Contributor
Posts: 3

Re: Data Format/Coding

Hi,

Yes I can have missing values, and there is also the possibility of a student having for example a score of 3 in all subjects, which in this case the maximum will be 3. 

 

Thank you for your help!

 

Francis

Super User
Posts: 17,842

Re: Data Format/Coding

So a student with two scores would have a lower aggregate than a student with all 4 scores.

@ChrisNZ solution accounts for missing values. If a student who has two missing values is the same as a student who has scores for all 4 then this is fine. 

 

This is a methodological consideration, not an issue with the code. 

☑ This topic is SOLVED.

Need further help from the community? Please ask a new question.

Discussion stats
  • 7 replies
  • 178 views
  • 0 likes
  • 3 in conversation