r - R中没有前导NA的滚动平均输出?
问题描述
我正在尝试使用Rrollmean()
中的包zoo
中的函数计算我的数据列表中的正确滚动平均值。我希望我的输出在开始时排除 NA,并且只列出计算出的滚动平均值。
我的原始时间序列数据如下所示:
> ts_qtr[1:2]
$`A`
Qtr1 Qtr2 Qtr3 Qtr4
2017 0 0 0 0
2018 0 0 0 0
2019 0 0 1 0
2020 0 0
$`B`
Qtr1 Qtr2 Qtr3 Qtr4
2017 0 1 0 0
2018 0 0 0 0
2019 0 0 0 0
2020 0 0
当我运行这行代码时:
cma_qtr <- lapply(ts_qtr, function(x) rollmean(x, k = 4, fill = NA, align = "right"))
,我得到这种带有领先 NA 的输出:
> cma_qtr[1:2]
$`A`
Qtr1 Qtr2 Qtr3 Qtr4
2017 NA NA NA 0.00
2018 0.00 0.00 0.00 0.00
2019 0.00 0.00 0.25 0.25
2020 0.25 0.25
$`B`
Qtr1 Qtr2 Qtr3 Qtr4
2017 NA NA NA 0.25
2018 0.25 0.00 0.00 0.00
2019 0.00 0.00 0.00 0.00
2020 0.00 0.00
我希望我的输出看起来像这样(没有 NA):
$`A&R SANDWICHES INC.BARIATRIC`
Qtr1 Qtr2 Qtr3 Qtr4
2017 0.00
2018 0.00 0.00 0.00 0.00
2019 0.00 0.00 0.25 0.25
2020 0.25 0.25
$`AAA Carolinas.BARIATRIC`
Qtr1 Qtr2 Qtr3 Qtr4
2017 0.25
2018 0.25 0.00 0.00 0.00
2019 0.00 0.00 0.00 0.00
2020 0.00 0.00
如果我运行我的代码行并声明填充 = FALSE,则前导值变为 0 而不是 NA(也不完全是我想要的)
cma_qtr2 <- lapply(ts_qtr, function(x) rollmean(x, k = 4, fill = FALSE, align = "right"))
> cma_qtr2[1:2]
$`A`
Qtr1 Qtr2 Qtr3 Qtr4
2017 0.00 0.00 0.00 0.00
2018 0.00 0.00 0.00 0.00
2019 0.00 0.00 0.25 0.25
2020 0.25 0.25
$`B`
Qtr1 Qtr2 Qtr3 Qtr4
2017 0.00 0.00 0.00 0.25
2018 0.25 0.00 0.00 0.00
2019 0.00 0.00 0.00 0.00
2020 0.00 0.00
如果我没有列出 fill 和 aline,我会收到一条错误消息:
> cma_qtr3 <- lapply(ts_qtr, function(x) rollmean(x, k = 4))
Error in ts(x) : 'ts' object must have one or more observations
我很困惑下一步该怎么做。最终,我想通过predict()
或forecast()
(来自包forecast
)函数运行滚动平均输出,这些函数由于 NA 而通过警告消息。
解决方案
您可能希望考虑在数据帧上使用na.rm = True
来维护 rwos,但将它们排除在计算之外。您也可以尝试na.omit()
或!is.na()
作为滚动平均值的条件。
你可以在这里看到它是如何工作的,他们计算不包括 NA 值的列的平均值。https://www.programmingr.com/tutorial/na-rm/
推荐阅读
- laravel - Laravel 查询生成器 - whereHas 带有查询选择值
- javascript - 拖动时谷歌地图多边形中心不更新
- c# - SQL, combining two tables for query
- haskell - yesod 将“responseBody”转换为haskell类型
- firebase - firebase 云功能预期的承诺或价值
- javascript - JavaScript 显示/隐藏 div
- r - Drop levels of the same name from the whole dataframe
- facebook-graph-api - 使用 GraphAPI 发布到 Facebook 页面
- angularjs - @angular/cli@1.7.4 - 未捕获的类型错误:无法读取未定义的属性“模块”
- algorithm - 包含引用插入的 YAML 缩小算法