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

如何在R中生成按标识分组的时间累计金额列?

在R中实现分组时间累计金额计算

要在R里实现按identifier分组的时间累计金额,有两种常用方案,下面一步步说明:

方案一:用dplyr包(推荐,可读性强)

这是tidyverse生态里的工具,操作逻辑和Excel的思路对应,很容易理解。

1. 准备数据(模拟你的示例)

df <- data.frame(
  identifier = c("aaa", "aaa", "aaa", "bbb", "bbb", "bbb", "bbb"),
  date = c("01", "02", "03", "01", "02", "03", "04"),
  amount = c(5, 6, 8, 5, 4, 0, 11)
)

2. 安装并加载dplyr

如果是第一次用,先安装包:

install.packages("dplyr")

然后加载:

library(dplyr)

3. 计算分组累计和

用group_by()指定分组变量,mutate()新增列,cumsum()计算累计值:

df <- df %>%
  group_by(identifier) %>%
  # 确保数据按日期排序(如果你的原始数据已经有序,这步可省略)
  arrange(date) %>%
  mutate(cumulative_amount = cumsum(amount)) %>%
  ungroup()

执行后查看结果,就会得到你需要的cumulative_amount列,和示例完全一致。

方案二:基础R的ave函数(无需额外包)

如果不想加载第三方包,用基础R的ave()函数也能实现:

# 先确保数据按identifier和date排序(如果原始数据无序)
df <- df[order(df$identifier, df$date), ]
# 计算累计金额
df$cumulative_amount <- ave(df$amount, df$identifier, FUN = cumsum)

关键注意点

  • 无论用哪种方法,必须保证每个分组内的date是按时间顺序排列的,否则累计和会出错。如果原始数据无序,一定要先排序。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 20:15:38