2017-02-15 5 views
0
Dv1 Dv2 Dv3 Dv4 Dv5 Dv6 Dv7 Dv8 
1 1 2 5 5 7 9 9 
3 4 8 8 8 9 10 . 
2 5 9 11 13 13 . . 
4 4 5 9 9 . . . 
2 6 7 9 . . . . 
2 4 6 . . . . . 
1 3 . . . . . . 
3 . . . . . . . 

У меня есть намного большая версия вышеуказанных данных. Каждый столбец имеет коэффициент, который при умножении на предыдущие данные столбца дает текущие данные столбца.Сумма предыдущих строк - SAS

Фактор = (сумма предыдущих 5 строк)/(сумма предыдущих 5 строк одной колонки влево) например. Колонка 2 = коэффициент (3 + 4 + 6 + 4 + 5)/(1 + 2 + 2 + 4 + 2) = 2, и в результате представляют собой данные:

Dv1 Dv2 Dv3 Dv4 Dv5 Dv6 Dv7 Dv8 
1 1 2 5 5 7 9 9 
3 4 8 8 8 9 10 . 
2 5 9 11 13 13 . . 
4 4 5 9 9 . . . 
2 6 7 9 . . . . 
2 4 6 . . . . . 
1 3 . . . . . . 
3 6 . . . . . . 

использовать любые доступные строки, если 5 не существуют над данными.

Я хочу заполнить данные, используя SAS. Моя проблема заключается в том, как суммировать предыдущие 5 строк, я довольно уверен, что могу исходить оттуда.

Большое спасибо заранее!

ответ

1

LAG функция.

sum_prev5 = lag(x) + lag2(x) + lag3(x) + lag4(x) + lag5(x);