は「ローリング・12ヶ月の和」のように聞こえます。そうであれば、異なるデータ構造(2つの変数ではなく、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;
出典
2016-07-08 17:18:55
Joe