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;
Available on demand!
Missed SAS Innovate Las Vegas? Watch all the action for free! View the keynotes, general sessions and 22 breakouts on demand.
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.