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

R tidyverse实现按id分组后rec首次出现1后后续行全置1的方法

实现代码

你可以直接用dplyr内置的累积最大值函数cummax()实现,完全符合你的管道写法要求:

library(tidyverse)

# 构造原始数据
a <- tibble(id = c(1,1,1,1,1,2,2,2,2,2,3,3,3,3,3),
            rec = c(0,0,1,1,0,0,1,0,0,0,0,1,0,1,0))

# 计算result列
b <- a %>% 
  group_by(id) %>% 
  mutate(result = cummax(rec)) %>% 
  ungroup()
逻辑说明
  • cummax()的作用是按行计算到当前位置为止的累积最大值,因为你的rec列只有0和1两个取值:
    • 同一id分组下,首次出现1之前,所有行的累积最大值都是0,和rec值完全一致
    • 首次出现1之后,后续所有行的累积最大值永远为1,正好匹配你要求的「首次出现1后所有行result都为1」的规则
  • 运行后得到的b和你给出的预期输出完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 21:24:05