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

