*新建sas數(shù)據(jù)集;
data test;
input id 2. var1 5. var2 5.;
cards;
1 1000 3000
2 500? 3000
2 2001 2733
3 2000 3000
3 8635 7200
4 2800 3000
5 7000 3000
;
run;
*data步累加;
data x1;
do until(last);
set test end=last;
sum_var1+var1;
sum_var2+var2;
output;
end;
run;
data x1;
set test;
retain sum_var1 0 sum_var2 0;
A=_N_; /*生成編號A,表示觀測行數(shù)*/
sum_var1+var1;
sum_var2+var2;
run;
*分組累加;
proc sort data=test;by id;run;
data x2;
set test;
by id;
retain sum_var1 0;
if first.id then sum_var1=0;
sum_var1+var1;
run;
/***利用數(shù)組同時對多個數(shù)據(jù)進(jìn)行累加***/
proc sort data=test;by id;run;
*累加;
data x3;
set test;
by id;
array var{*} var1-var2;
array sum_over{*} sum1-sum2;
do i=1 to dim(var);
sum_over(i)+var(i);
end;
run;
*分組累加;
data x3;
set test;
by id;
array var{*} var1-var2;
array sum_over{*} sum1-sum2;
do i=1 to dim(var);
if first.id then sum_over(i)=0;
sum_over(i)+var(i);
end;
run;