BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
Billybob73
Quartz | Level 8

Hi,

 

The outcome of my query should be the following :

 

genderscoreoutcome
1481
1481
1452
1563
2501
2501
2412
2513

 

This is my script :

 

data students;
  input gender score ;
  cards;
  1 48
  1 48
  1 45
  1 56
  2 50
  2 50
  2 41
  2 51
  ;
run;

 

I've tried this :

 

proc sort data = students;
  by gender score;
run;
data students2;
  set students;
  by gender score;
  if (first.gender and first.score) then outcome + 1;
run;

 

But this is not the solution.

 

Can anybody help out ?

 

Thanks

B

1 ACCEPTED SOLUTION

Accepted Solutions
ChrisNZ
Tourmaline | Level 20

Liek this?


data students2;
  set students;
  by gender score;
  if first.gender then outcome = 0;
  if first.score  then outcome + 1;
run;
gender score outcome
1 45 1
1 48 2
1 48 2
1 56 3
2 41 1
2 50 2
2 50 2
2 51 3

View solution in original post

4 REPLIES 4
ChrisNZ
Tourmaline | Level 20

Liek this?


data students2;
  set students;
  by gender score;
  if first.gender then outcome = 0;
  if first.score  then outcome + 1;
run;
gender score outcome
1 45 1
1 48 2
1 48 2
1 56 3
2 41 1
2 50 2
2 50 2
2 51 3
Billybob73
Quartz | Level 8

Thanks very much Chris !

Reeza
Super User

Store your FIRST variables to help build your conditions.

I've included the correct answer, but commented it out. 

 

data students;
  input gender score ;
  cards;
  1 48
  1 48
  1 45
  1 56
  2 50
  2 50
  2 41
  2 51
  ;
run;
 
I've tried this :
 
proc sort data = students;
  by gender score;
run;
data students2;
  set students;
  by gender score;
  first_gender = first.gender;
first_score = first.score;

/*
if first.gender then outcome=1;
else if first.score then outcome+1;
*/
run;
 

@Billybob73 wrote:

Hi,

 

The outcome of my query should be the following :

 

gender score outcome
1 48 1
1 48 1
1 45 2
1 56 3
2 50 1
2 50 1
2 41 2
2 51 3

 

This is my script :

 

data students;
  input gender score ;
  cards;
  1 48
  1 48
  1 45
  1 56
  2 50
  2 50
  2 41
  2 51
  ;
run;

 

I've tried this :

 

proc sort data = students;
  by gender score;
run;
data students2;
  set students;
  by gender score;
  if (first.gender and first.score) then outcome + 1;
run;

 

But this is not the solution.

 

Can anybody help out ?

 

Thanks

B


 

Billybob73
Quartz | Level 8

Thanks Reeza!

hackathon24-white-horiz.png

2025 SAS Hackathon: There is still time!

Good news: We've extended SAS Hackathon registration until Sept. 12, so you still have time to be part of our biggest event yet – our five-year anniversary!

Register Now

How to Concatenate Values

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.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 4 replies
  • 1578 views
  • 0 likes
  • 3 in conversation