You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rollmean生成的7日滚动均值未正确显示在新列的问题排查

COVID-19数据7日滚动均值计算问题解决

问题梳理

你在计算新增死亡数的7日滚动均值时,遇到两个核心问题:

  • 结果从第4天就开始出现,不符合预期的"第7天开始有值"
  • 尝试多种方法后结果仍异常,怀疑滚动计算用到了过滤前的数据

关键原因

  1. rollmean默认使用align="center"(居中对齐窗口),所以第4天就会生成计算值,而非你需要的右对齐窗口
  2. 错误的分组操作:如果按date分组,每组仅1条数据,滚动窗口无法正常计算,会导致结果全NA或异常
  3. 数据预处理环节可能存在疏漏:过滤后的数据未正确排序或未更新到后续计算的数据集

解决方案

1. 先确保数据预处理正确

取消不必要的分组,按日期升序排列,重新确认过滤条件:

# 取消分组+按日期排序+过滤指定日期后的数据
us_totals <- us_totals %>%
  ungroup() %>%
  arrange(date) %>%
  filter(date >= as.Date("2020-03-15"))

2. 修正rollmean参数

设置align="right"让窗口右对齐(取当前行及前6天共7条数据),并用fill=NA填充前6天的空值:

us_totals <- us_totals %>%
  mutate(delta_deaths_7 = rollmean(deaths, k = 7, align = "right", fill = NA))

此时第7条数据(2020-03-21)的delta_deaths_7会是你预期的55.7,前6行均为NA,完全符合需求。

3. 备选方案:用slider包实现更直观

如果仍有问题,试试slider包的slide_dbl,明确要求必须凑齐7条数据才计算均值:

library(slider)
us_totals <- us_totals %>%
  mutate(delta_deaths_7 = slide_dbl(deaths, ~mean(.x), .before = 6, .complete = TRUE))

.complete=TRUE会自动忽略不足7条数据的窗口,直接返回NA,直到第7天生成第一个均值。


内容的提问来源于stack exchange,提问作者Grace Cooper

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 01:50:12