BookmarkSubscribeRSS Feed
Bal23
Lapis Lazuli | Level 10
I need to modify a program; originally, it is a very simple data step.

Data want;
Set old;
Where rownum=3;
Run;

Now I need to add some new rules because of different ways of calculating the score, instead of just pick up the score on the third row before. I cannot pick the third row (one size does not fit all!).
The rules are listed as follows

1.	If id in (‘4’,’5’,’110’,’119,’1000’) then score=sum1/sum2;
2.	If id in (‘34’,’12’,’245’,’beaa’,’geee2’) then score= sum(aver)/sumrownum:
3.	If id in (‘rt’, ‘t32’,’g45’,’2’,’578’) then score = score where appears on the first row, that is rownum=1
4.	If id in (‘a2’,’c34’) then score=score where appears on the second row, that is rownum=2;
….
So I am thinking of doing this in a datastep, it would be easy for the first two steps, but for the last two, it seems that I need use “where…” and I do not know how to do. Or do I have to set up a subdataset? That will be time consuming

Can anybody show me how to do? Thanks.


2 REPLIES 2
Reeza
Super User

1. Post sample data

2. Post sample expected output

 

Astounding
PROC Star

It takes a little work, but you can get the values in this way:

 

data want;

set old;

retain score1 score2;

****************** more statements to calculate SCORE

if rownum=1 then score1 = score;

else if rownum=2 then score2 = score;

drop score1 score2;

run;

 

Now SCORE1 is the calculated SCORE value for ROWNUM=1, and presumably gets calculated before it is needed to generate SCORE values for later values of ROWNUM.  Just use SCORE1 and SCORE2 as part of  your SCORE calculations.

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
  • 2 replies
  • 1105 views
  • 0 likes
  • 3 in conversation