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

使用rollmean计算滚动均值时如何用原始值填充生成的NA

滚动均值前导NA填充原始值方案

滚动均值计算时前k-1项返回NA是滑动窗口观测数不足导致的,可通过以下几种方式用原始值填充缺失位,避免数据点丢失,以下以窗口大小k=3为例演示:

方案1:直接用对应位置原始值替换NA

如果不需要对前几项做均值计算,直接保留原始观测值即可:

# 加载依赖包
library(zoo)
library(dplyr)

# 构造测试数据
x <- c(1, 3, 5, 7, 9, 11)
k <- 3

# 计算默认滚动均值
roll_mean <- rollmean(x, k = k, fill = NA, align = "right")
# 用原始值替换NA
fill_roll_mean <- coalesce(roll_mean, x)

返回结果为 1 3 3 5 7 9,前2项为原始值,第3项起为窗口均值。

如果不想使用dplyr包,也可以用基础R直接替换:

roll_mean[1:(k-1)] <- x[1:(k-1)]

方案2:前几项自适应窗口计算均值

如果希望前几项也遵循滑动计算逻辑,仅用当前已有的所有观测值计算均值,可以使用rollapply的partial参数实现:

roll_mean_partial <- rollapply(x, width = k, FUN = mean, align = "right", partial = TRUE)

返回结果为 1 2 3 5 7 9,第1项为原始值,第2项为前2个观测值的均值,第3项起为固定窗口大小的均值。

注意事项

  • 以上示例均使用时间序列常用的right右对齐逻辑,如果你使用左对齐或居中对齐,仅需要调整NA替换的对应位置即可。
  • 如果是自定义实现的滚动均值逻辑,替换逻辑完全一致,定位NA出现的位置替换为对应原始值即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 17:39:02