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

如何用dplyr或base R实现常量向下填充,遇break行数值加1

R 生成指定分组编号列的实现方案

示例数据构造

先构造和需求一致的测试数据:

df <- data.frame(
  step = c(1, 2, NA, 1, 2, 3, NA, 1),
  state = c("active", "active", "break", "active", "error", "active", "break", "active")
)

dplyr 实现方案

核心逻辑是用cumsum()累计state等于break的次数,再加1作为初始偏移,即可得到目标列:

library(dplyr)
df <- df %>%
  mutate(n = cumsum(state == "break") + 1)

base R 实现方案

逻辑和dplyr版一致,直接对列赋值即可:

df$n <- cumsum(df$state == "break") + 1

运行上述代码后得到的数据框n列和给出的预期效果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 22:27:01