Похож «каталки 12 месяцев суммой». Если это так, гораздо проще сделать с другой структурой данных (а не с двумя переменными, но с 24 строками 1 переменной); то у вас есть все инструменты ETS или простой процесс на этапе SQL или SAS.
Если вы не можете/не будете реструктурировать свои данные, вы можете сделать это, загрузив данные во временные массивы (или хеш-таблицу, но массивы проще для новичков). Это дает вам доступ ко всему этому прямо вперед. Пример:
data have;
do month = 1 to 12;
q_2014 = rand('Uniform')*10+500+month*5;
q_2015 = rand('Uniform')*10+550+month*5;
output;
end;
run;
data want;
array q2014[12] _temporary_; *temporary array to hold data;
array q2015[12] _temporary_;
if _n_=1 then do; *load data into temporary arrays;
do _n = 1 to n_data;
set have point=_n nobs=n_data;
q2014[_n] = q_2014;
q2015[_n] = q_2015;
end;
end;
set have;
do _i = 1 to _n_; *grab the this_year data;
q_rolling12 = sum(q_rolling12,q2015[_i]);
end;
do _j = _n_+1 to n_data;
q_rolling12 = sum(q_rolling12,q2014[_j]);*grab the last_year data;
end;
run;