在当前观察中阅读下一个观察值

ath*_*esh 6 sas

我有一个名为'input'的数据集,其中包含以下观察结果

ID薪资
10 1000
20 2000
30 3000
40 4000

我需要一个带有以下观察结果的输出数据集

ID薪资Next_row_Salary
10 1000 2000
20 2000 3000
30 3000 4000
40 4000 null

注意:方案是下一个obersavtion的工资应该是Next_Row_salary列的当前观察值.如果没有下一个观察值,则Next_Row_salary列的当前观察值应为"null".

请帮助我为这个场景创建一个sas代码.

Lon*_*ish 18

有几种方法可以实现这一点,这就是我将如何做到这一点.

data have;
   input ID Salary;
   cards;
10 1000
20 2000
30 3000
40 4000
;
run;

data want;
   recno=_n_+1;
   set have end=last;
   if not last 
           then set have (keep=salary rename=(salary=next_row_salary)) point=recno;
      else call missing(next_row_salary);
run;
Run Code Online (Sandbox Code Playgroud)