Добавить столбец даты к расчету скользящей суммы временных рядов в R

Предположим, у меня есть следующие данные временного ряда: source

+-----------+---+
|   Date    | A |
+-----------+---+
| 31-Dec-15 | 1 |
| 31-Dec-16 | 2 |
| 31-Dec-17 | 3 |
| 31-Dec-18 | 4 |
| 31-Dec-19 | 5 |
+-----------+---+

Я выполняю следующий скользящий расчет для source с N = 2 и N = 3. R-код:

for(i in (nrow(source)-(N-1)):1){A[i] <- sum(source$A[i:(i+(N-1))])}
output = data.frame(A)
print(output)

Как интегрировать индекс даты в приведенный выше код, чтобы

  1. N=2 выходные результаты в
+-----------+---+
|   Date    | A |
+-----------+---+
| 31-Dec-16 | 3 |
| 31-Dec-17 | 5 |
| 31-Dec-18 | 7 |
| 31-Dec-19 | 9 |
+-----------+---+
  1. N=3 вывод приводит к

+-----------+----+
|   Date    | A  |
+-----------+----+
| 31-Dec-17 |  6 |
| 31-Dec-18 |  9 |
| 31-Dec-19 | 12 |
+-----------+----+

Мой текущий код выводит только столбец A без столбца Date. И я должен вручную добавить столбец Date после печати output. Мои фактические данные временных рядов намного длиннее этого, а скользящие вычисления более сложны, поэтому это упрощенный пример.


person sjedi    schedule 05.08.2020    source источник
comment
Вы можете использовать rollsum(df1$A, 3)   -  person akrun    schedule 05.08.2020
comment
@akrun мой фактический код скользящих вычислений в разделе кода for сложнее, чем в приведенном выше примере. Следовательно, я хотел бы найти способ добавить столбец Date без изменения раздела кода for   -  person sjedi    schedule 05.08.2020
comment
Разве вы не можете просто использовать output <- data.frame(Date = source$Date[N:nrow(source)], A = A)?   -  person Alexlok    schedule 05.08.2020


Ответы (1)


Формализация предложения @Alexlok:

for(i in (nrow(source)-(N-1)):1){A[i] <- sum(source$A[i:(i+(N-1))])}
output = data.frame(Date = source$Date[N:nrow(source)],A = A)
print(output)
person sjedi    schedule 06.08.2020