如何在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
相关产品推荐
相关产品推荐

