【发布时间】:2020-11-25 18:40:12
【问题描述】:
假设我有以下时间序列数据,source
+-----------+---+
| Date | A |
+-----------+---+
| 31-Dec-15 | 1 |
| 31-Dec-16 | 2 |
| 31-Dec-17 | 3 |
| 31-Dec-18 | 4 |
| 31-Dec-19 | 5 |
+-----------+---+
我正在使用N = 2 和N = 3 对source 执行以下滚动计算。 R代码:
for(i in (nrow(source)-(N-1)):1){A[i] <- sum(source$A[i:(i+(N-1))])}
output = data.frame(A)
print(output)
如何将日期索引整合到上述代码中,以便
-
N=2输出结果在
+-----------+---+
| Date | A |
+-----------+---+
| 31-Dec-16 | 3 |
| 31-Dec-17 | 5 |
| 31-Dec-18 | 7 |
| 31-Dec-19 | 9 |
+-----------+---+
-
N=3输出结果
+-----------+----+
| Date | A |
+-----------+----+
| 31-Dec-17 | 6 |
| 31-Dec-18 | 9 |
| 31-Dec-19 | 12 |
+-----------+----+
我当前的代码只输出A 列,没有Date 列。而且我必须在打印output 后手动附加Date 列。我的实际时间序列数据比这长得多,滚动计算更复杂,所以这是一个简化的例子。
【问题讨论】:
-
你可以使用
rollsum(df1$A, 3) -
@akrun 我在
for代码部分中的实际滚动计算代码比上面示例中的更复杂。因此,我想找到一种方法来添加Date列而不修改for代码部分 -
你不能用
output <- data.frame(Date = source$Date[N:nrow(source)], A = A)吗?
标签: r dataframe date time-series rolling-computation