每组进行下一次观察

时间:2016-11-29 09:58:09

标签: sas analytics

我正在研究SAS中的数据集以获得下一个观察结果,该分数应该是Next_Row_score列的当前观察值。如果没有下一个观察值,那么Next_Row_score列的当前观察值应该是每组(ID)为空。为了更好地说明,我提供了以下数据集中的示例:

ID Score 
10 1000 
10 1500 
10 2000 
20 3000 
20 4000 
30 2500 

结果输出应该像 -

ID Salary Next_Row_Salary 
10 1000   1500 
10 1500   2000 
10 2000   . 
20 3000   4000 
20 4000   .  
30 2500   2500  

提前感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

PUT

答案 1 :(得分:0)

试试这个:

data have;
  input ID Score;

  datalines;
10 1000 
10 1500 
10 2000 
20 3000 
20 4000 
30 2500 
;
run;

proc sql noprint;
    select count(*)  into :obsHave
    from have;
quit;

data want2(rename=(id1=ID Score1=Salary) drop=ID id2 Score);
    do i=1 to &obsHave;
        set have point=i;
        id1=ID;
        Score1=Score;
        j=i+1;
        set have point=j;
        id2=ID;
        if id1=id2 then do;
            Next_Row_Salary = Score;
        end;
        else Next_Row_Salary=".";
        output;
    end;
stop;
;
run;

答案 2 :(得分:0)

有一个更简单的(在我看来,至少)proc sql方法并不涉及循环:

document.querySelectorAll('');