R语言dplyr包计算运行最大值(累计最大值)的实现方法
使用R dplyr包计算运行累计最大值的实现方法
核心实现逻辑为搭配dplyr数据处理函数和R内置的累计最大值函数完成计算,具体操作步骤如下:
- 第一步:安装(未安装时)并加载dplyr包
- 第二步:对数据集按TIME字段升序排序,若存在多个不同CODE,需先按CODE分组保证每个CODE的累计最大值独立计算
- 第三步:使用
mutate()新增MAXVALUE字段,存储cummax(VALUE)的计算结果
完整可运行示例代码
# 加载dplyr包 library(dplyr) # 构造你提供的示例数据集 df <- tibble( CODE = rep("ABC", 4), TIME = c(1, 2, 3, 4), VALUE = c(40, 50, 30, 60) ) # 核心处理逻辑 result <- df %>% arrange(TIME) %>% # 按TIME升序排序,若原始数据已经是TIME升序可省略该步骤 group_by(CODE) %>% # 仅单条CODE时可省略,多CODE场景必须保留 mutate(MAXVALUE = cummax(VALUE)) %>% ungroup() # 不需要保留分组结构时可添加该行
输出结果说明
运行上述代码后得到的result表结构和你要求的完全一致:
| CODE | TIME | VALUE | MAXVALUE |
|---|---|---|---|
| ABC | 1 | 40 | 40 |
| ABC | 2 | 50 | 50 |
| ABC | 3 | 30 | 50 |
| ABC | 4 | 60 | 60 |
其中cummax()是R内置的累计最大值函数,会按行顺序计算从第一行到当前行的所有VALUE的最大值,刚好匹配你需要的「截至每个时间点的累计最大值」需求。
内容的提问来源于stack exchange,提问作者user3007712
相关产品推荐
相关产品推荐

