Мне нужно вычислить движущуюся сумму с 10-дневным выводом в SAS. Я предполагаю, что расширение proc, вероятно, лучший способ сделать это. Я могу сделать это с помощью приведенного ниже кода. Но я хотел бы исключить шаг данных и уменьшить количество строк, используемых в расширении proc, если это возможно.Как создать Moving Sum с помощью Lead с помощью Prco Expand?
proc expand data=averages out=transformed;
id dt;
convert x=x_lead_10/transform=(lead 10);
convert x=x_lead_11/transform=(lead 11);
convert x=x_lead_12/transform=(lead 12);
convert x=x_lead_13/transform=(lead 13);
convert x=x_lead_14/transform=(lead 14);
convert x=x_lead_15/transform=(lead 15);
convert x=x_lead_16/transform=(lead 16);
data formatted;
set work.transformed;
x_sum = sum(x_lead_10,x_lead_11,x_lead_12,x_lead_13,x_lead_14,x_lead_15,x_lead_16)
run;
У меня есть работы, но я пытаюсь найти более эффективный способ кодировать это. Я делаю это для нескольких переменных, которые заставляют мой код быстро переполняться.
Я не очень хорошо разбираюсь в 'proc expand', но есть несколько опций' transform-sum', которые вы можете использовать здесь: http://support.sas.com/documentation/cdl/en/etsug/ 63939/HTML/default/viewer.htm # etsug_expand_sect026.htm –
Можете ли вы рассказать о том, что вы подразумеваете под 10-дневным линией с перемещающейся суммой. Я заметил, что вы тоже не использовали опцию TRIM, вы изучили это? – Reeza
@Reeza Я пытаюсь получить строку 1, чтобы быть суммой строк с 10 по 16, тогда я хочу, чтобы строка вторая была суммированием или строками с 11 по 17 и т. Д. ... Я не рассматривал вариант TRIM, я Теперь я читаю об этом. Благодарю. – Jarom