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

如何在R语言中计算列内相邻行值均值的累加与累积列?

解决方案

假设你的数据集已加载为数据框df,以下是实现需求的两种常用方法:

1. 生成CUM列

CUM列的逻辑是当前行Value与上一行Value的算术平均值,第一行无前置数据,设为NA。

基础R实现

# 构造示例数据(已有数据集可跳过此步)
df <- data.frame(
  Row = 1:4,
  Date = as.Date(c("2022-01-03", "2022-01-04", "2022-01-05", "2022-01-06")),
  Value = c(400, 350, 368, 418)
)

# 添加CUM列
df$CUM <- c(NA, (df$Value[-1] + df$Value[-nrow(df)])/2)

运行后得到的数据集与示例一致:

Row       Date Value CUM
1   1 2022-01-03   400  NA
2   2 2022-01-04   350 375
3   3 2022-01-05   368 359
4   4 2022-01-06   418 393

Tidyverse(dplyr)实现

若习惯用tidyverse工具链:

library(dplyr)

df <- df %>%
  mutate(CUM = (Value + lag(Value))/2)

lag(Value)会自动获取每行的前一行Value值,第一行无前置值时返回NA,完美匹配需求。

2. 计算B值

观察公式可知,B值就是CUM列所有非NA值的总和,直接求和即可:

基于CUM列计算

B <- sum(df$CUM, na.rm = TRUE)
# 输出结果:1127

直接计算(无需生成CUM列)

若不需要保留CUM列,可直接通过Value列计算:

B <- sum((df$Value[-1] + df$Value[-nrow(df)])/2)
# 输出结果:1127

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 14:21:20