Looking at the code taken from here to calculate the moving average for one dimension/category patient: data ds1;
do patient='A','B','C';
do month=1 to 7;
num=int(ranuni(0)*10);
output;
end;
end;
run;
proc sort;
by patient;
run;
%let n = 4;
data ds2;
set ds1;
by patient;
retain num_sum 0;
if first.patient then do;
count=0;
num_sum=0;
end;
count+1;
last&n=lag&n(num);
if count gt &n then num_sum=sum(num_sum,num,-last&n);
else num_sum=sum(num_sum,num);
if count ge &n then mov_aver=num_sum/&n;
else mov_aver=.;
run;
title 'Moving average within BY-Group';
proc print;
run; I am wondering if this could be adapted for an additional dimenension/category Cat1. A starting point would be: data ds1;
do patient='A','B','C';
do Cat1='C1','C2';
do month=1 to 7;
num=int(ranuni(0)*10);
output;
end;
end;
end;
run;
proc sort;
by patient Cat1;
run; Any help would be very much appreciated. Thanks a lot.
... View more