I have the following code, which is returning the accumulated sum of all observations. But I want the accumulated sum by date.
In "proc sql" would do:
group by date
But in this code that I have, what do I do?
data resul1_perf;
set resul_perf;
retain bad_acc good_acc;
if _n_ = 1 then bad_acc = bad;
else bad_acc = bad_acc + bad;
if _n_ = 1 then good_acc = good;
else good_acc = good_acc + good;
dif_acc = abs(bad_acc - good_acc);
FORMAT bad_acc COMMAX20.3;
FORMAT good_acc COMMAX20.3;
FORMAT dif_acc COMMAX20.3;
run;
data resul1_perf;
set resul_perf;
by date;
if first.date then do;
bad_acc=0;
good_acc=0;
end;
bad_acc + bad;
good_acc + good;
dif_acc = abs(bad_acc - good_acc);
FORMAT bad_acc good_acc dif_acc COMMAX20.3;
run;
data resul1_perf;
set resul_perf;
by date;
if first.date then do;
bad_acc=0;
good_acc=0;
end;
bad_acc + bad;
good_acc + good;
dif_acc = abs(bad_acc - good_acc);
FORMAT bad_acc good_acc dif_acc COMMAX20.3;
run;
Use BY in the data step and the first. and last. automatic variables:
proc sort data=resul_perf;
by date;
run;
data resul1_perf;
set resul_perf;
by date;
retain bad_acc good_acc;
if first.date
then do;
bad_acc = bad;
good_acc = good;
end;
else do;
bad_acc = bad_acc + bad;
good_acc = good_acc + good;
end;
if last.date;
dif_acc = abs(bad_acc - good_acc);
format
bad_acc
good_acc
dif_acc commax20.3
;
run;
SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!
Learn the difference between classical and Bayesian statistical approaches and see a few PROC examples to perform Bayesian analysis in this video.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.