首页 > 解决方案 > R中的扩展窗口(时间序列预测)

问题描述

嗨,我是 stackoverflow 和 R 的新手。我目前正在学习使用 Rstudio 和 Python 的机器学习和深度学习课程。在这门课程中,他也在教授预测,他只使用 Python 来实现这些代码。在预测的特征工程部分,他正在实现扩展窗口功能,这是 Pandas 的一部分。有人可以帮我在 R 中找到这段代码吗?

他在python中使用的代码是Feature['Expand_Max']=df['births'].expanding().max()

在运行此代码之前,数据集如下所示:

日期 出生 滞后1 滞后2 Roll_mean Roll_max
1959-01-01 35 1959年 1 1 不适用 不适用 不适用 不适用
1959-01-02 32 1959年 1 2 35 不适用 33.5 不适用
1959-01-03 30 1959年 1 3 32 不适用 31.0 35
1959-01-04 31 1959年 1 4 30 不适用 30.5 32
1959-01-05 44 1959年 1 5 31 不适用 37.5 44
1959-01-06 29 1959年 1 6 44 不适用 36.5 44
1959-01-07 45 1959年 1 7 29 不适用 37.0 45
1959-01-08 43 1959年 1 8 45 不适用 44.0 45
1959-01-09 38 1959年 1 9 43 不适用 40.5 45
1959-01-10 27 1959年 1 10 38 不适用 32.5 43

运行此代码后数据集如下所示:

他在python中使用的代码是Feature['Expand_Max']=df['births'].expanding().max()

日期 出生 滞后1 滞后2 Roll_mean Roll_max Expand_Max
1959-01-01 35 1959年 1 1 不适用 不适用 不适用 不适用 35
1959-01-02 32 1959年 1 2 35 不适用 33.5 不适用 35
1959-01-03 30 1959年 1 3 32 不适用 31.0 35 35
1959-01-04 31 1959年 1 4 30 不适用 30.5 32 35
1959-01-05 44 1959年 1 5 31 不适用 37.5 44 44
1959-01-06 29 1959年 1 6 44 不适用 36.5 44 44
1959-01-07 45 1959年 1 7 29 不适用 37.0 45 45
1959-01-08 43 1959年 1 8 45 不适用 44.0 45 45
1959-01-09 38 1959年 1 9 43 不适用 40.5 45 45
1959-01-10 27 1959年 1 10 38 不适用 32.5 43 45

标签: pythonrpandastime-seriesforecasting

解决方案


您可以使用zoo::na.locfwhich将用列中的最后一个非 NA 值fromLast = TRUE填充值,将在每个点返回累积最大值。NAcummax

df$Roll_max <- cummax(zoo::na.locf(df$Roll_max, fromLast = TRUE))
df$Roll_max
#[1] 35 35 35 35 44 44 45 45 45 45

推荐阅读