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

在R中如何计算当前行与前后相邻行数值之和的平均值并生成TMA列

R 基于mutate实现三行滑动平均值计算

核心需求

基于现有数值列,新增TMA列,每一行取值为当前行、前一行、后一行三个数值的平均值。

方案1:仅使用dplyr内置函数

无需额外安装第三方包,逻辑直观易调整:

library(dplyr)

# 构造示例数据,可替换为你自己的数据集
df <- tibble(value = c(3, 1, 4, 1, 5, 9, 2, 6))

# 新增TMA列
df <- df %>%
  mutate(
    TMA = (lag(value, n = 1) + value + lead(value, n = 1)) / 3
  )

说明:默认首行无前置行、末行无后置行时返回NA,如果需要自定义边界填充值,可修改lag(value, n = 1, default = 自定义值)、lead(value, n = 1, default = 自定义值)的default参数。

方案2:使用slider包实现通用滑动计算

适合需要灵活调整窗口大小的场景,代码更简洁易维护:

# 首次使用先安装包
# install.packages("slider")
library(dplyr)
library(slider)

df <- df %>%
  mutate(
    TMA = slide_dbl(
      .x = value,
      .f = mean,
      .before = 1,
      .after = 1,
      .complete = TRUE # 仅窗口内存在3个有效值时返回结果,否则返回NA
    )
  )

说明:如果允许边界行使用截断窗口计算(比如首行用当前行+后一行求平均),去掉.complete = TRUE参数即可。

内容的提问来源于stack exchange,提问作者Rodrigo H. Ozon

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 20:48:03