我正在研究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
提前感谢您的帮助。
答案 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('');