Hii I have following input
Input dataset :
id max score
101 20 45
101 32 65
101 28 50
output :
id max score change
101 20 45 5
101 28 50 15
101 32 65 .
pls help me out
Perhaps:
proc sort data=have;
by id score;
run;
data want;
set have;
by id;
if last.id=0 then do;
_n_ = _n_ + 1;
set have (keep=score rename=(score=next_score)) point=_n_;
change = next_score - score;
end;
drop next_score;
run;
I don't understand how the column named change is computed. You didn't explain that.
Perhaps:
proc sort data=have;
by id score;
run;
data want;
set have;
by id;
if last.id=0 then do;
_n_ = _n_ + 1;
set have (keep=score rename=(score=next_score)) point=_n_;
change = next_score - score;
end;
drop next_score;
run;
Is there any way to get the observations of one varaible to other by excluding the first value of that varaible ie
score score2
45 50
50 64
65
data have; input id max score; cards; 101 20 45 101 32 65 101 28 50 ; run; proc sort data=have;by id score;run; data want; merge have have(keep=id score rename=(id=_id score=_score) firstobs=2); if id=_id then diff=_score-score; drop _:; run;
Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 25. Read more here about why you should contribute and what is in it for you!
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.