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

如何在R语言DataFrame中按行计算跨年度列的累计求和

R语言DataFrame按行累计求和实现方法

测试数据

data <- data.frame(
  `Delivery Year` = c('1976','1977','1978','1979'),
  `Year.1976` = c(10,3,8,0),
  `Year.1977` = c(5,0,5,0),
  `Year.1978` = c(10,10,0,0),
  `Year.1979` = c(13,0,0,14)
)

需求为保留第一列Delivery Year不变,对后续所有年份列按行逐列累计求和,替换原列数值生成累计结果。

实现方法

方法1:基础R(最简高效实现)

直接用apply按行调用cumsum累计函数,转置后回写即可:

# 排除第一列非数值列,按行求累计和后回写
data[, -1] <- t(apply(data[, -1], MARGIN = 1, FUN = cumsum))

方法2:tidyverse风格实现

适合习惯dplyr语法的场景:

library(dplyr)

data <- data %>%
  rowwise() %>%
  # 按行对所有年份列做累计求和,按列位置对应赋值
  mutate(across(starts_with("Year."), ~cumsum(c_across(starts_with("Year.")))[which(names(data)[-1] == cur_column())])) %>%
  ungroup()

输出结果验证

运行代码后得到的结果与预期完全一致:

print(data)
#   Delivery Year Year.1976 Year.1977 Year.1978 Year.1979
# 1          1976        10        15        25        38
# 2          1977         3         3        13        13
# 3          1978         8        13        13        13
# 4          1979         0         0         0        14

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 15:06:03