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;
SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!
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.
Ready to level-up your skills? Choose your own adventure.