data a;
input id a b;
cards;
1 1.1 2
2 1.2 4
3 1.3 4
4 1.0 1
;
run;
proc sort data=a;
by descending a ;
run;
data temp;
set a end=eof;
lag1=lag(b);lag2=lag2(b);
if not eof then do;
pt=_n_+1;
set a(rename=(b=next1) keep=b) point=pt;
end;
run;
data temp1;
set temp end=eof;
if not eof then do;
pt=_n_+1;
set temp(rename=(next1=next2) keep=next1) point=pt;
end;
run;
data final;
set temp1 end=eof;
if _n_=1 then c=mean(next1,next2);
else if eof then c=mean(lag1,lag2);
else c=mean(lag1,next1);
keep id a b c;
run;
proc sort data=final;
by id;
run;