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

如何在R中创建序列达峰后始终保留最大值的新变量?

问题原因

你原有代码的问题在于错误地将日期列sampling_date与which.max()返回的行索引直接比较,R的隐式类型转换会导致判断逻辑完全失效,才会出现所有值都被替换为全局最大值的问题。

解决方案

你需要先定位首次出现最大值的行位置,再通过行号判断是否需要替换值即可,对应实现代码如下:

library(dplyr)

data.1.new.version <- data.1 %>%
  mutate(
    # 判断当前行是否在首次最大值行之后(包含首次最大值行)
    value2 = if_else(row_number() >= which.max(value), max(value), value)
  )

运行后生成的value2列和你示例中data.2的value2完全一致。

如果后续你需要处理多组样本的批量计算,可使用分组逻辑实现:

# 假设数据中sample_id列为样本分组标识
data.1.grouped <- data.1 %>%
  group_by(sample_id) %>%
  mutate(
    value2 = if_else(row_number() >= which.max(value), max(value), value)
  ) %>%
  ungroup()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 17:45:04