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

如何在R语言中获取股票序列的累计最大值

在R中计算每只股票的累计最大值(截至当前行)

你需要实现的是累计最大值(running maximum)——也就是从每只股票的第一行数据到当前行的收盘价最大值,rollmax因为需要固定窗口宽度,确实不适合这个场景。下面提供两种高效的实现方案,尤其适合大型数据集:

方法1:使用dplyr(适合常规数据处理)

假设你的数据框名为stock_data,包含stock_id(股票唯一标识)和close_price(收盘价)两列。先按股票分组,再用cummax()函数计算每组内的累计最大值:

library(dplyr)

# 按股票分组计算累计最大值
stock_data <- stock_data %>%
  group_by(stock_id) %>%
  mutate(cum_max = cummax(close_price)) %>%
  ungroup()

cummax()会逐行遍历每组数据,自动保留从第一行到当前行的最大值,完全匹配你想要的效果。

方法2:使用data.table(适合大型数据集)

如果你的数据库非常大,data.table的运算效率远高于dplyr,推荐用这个方法:

library(data.table)

# 转换为data.table格式(若原数据已是则跳过此步)
setDT(stock_data)

# 按股票分组,新增累计最大值列
stock_data[, cum_max := cummax(close_price), by = stock_id]

:=操作符会直接在原数据集上新增列,避免额外的内存开销,处理大数据时优势明显。

验证示例(单只股票场景)

对应你给出的示例数据,直接用cummax()就能得到目标结果:

single_stock <- data.frame(Data = c(1,2,1,3,5,6,3,2,1,4,5,7,3))
single_stock$max <- cummax(single_stock$Data)

输出的max列与你提供的示例完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 17:46:16