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

如何在R语言中创建标记移动最大值的新列

R语言实现累积最大值标记(保留NA值)

首先给出原始数据向量:

x <- c(23, 17, 25, 22, 21, 51, 22, NA, 62, 27, NA, NA, 27, 50, NA, 
NA, 22, 19, 27, 27, NA, 25, NA, NA, 25)

可以用R的向量化函数cummax()替代循环,高效实现需求,同时保留原向量中的NA值:

步骤1:计算截至当前行的累积最大值

cummax()会逐行计算从第一个元素到当前元素的最大值,设置na.rm = FALSE可保留NA位置,后续非NA元素会基于之前的有效最大值继续计算:

cum_max <- cummax(x, na.rm = FALSE)

步骤2:生成标记向量

通过条件判断,标记当前元素是否等于对应位置的累积最大值,同时保留原向量的NA值:

flag <- ifelse(is.na(x), NA, as.integer(x == cum_max))

验证结果

将原向量、累积最大值和标记向量合并查看:

print(data.frame(x, cum_max, flag))

部分输出结果示例:

x cum_max flag
1  23      23    1
2  17      23    0
3  25      25    1
4  22      25    0
5  21      25    0
6  51      51    1
7  22      51    0
8  NA      NA   NA
9  62      62    1
...

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 10:37:10