首页 > 解决方案 > 根据第二列以连续序列分配值

问题描述

我想将一个序列分配给一列 TRUE 或 FALSE 值,该序列在一个或多个连续的 FALSE 值之后为 TRUE 保持相同的值。

即我试图复制的是这个;

df <- data.frame(
new_activity = as.character(c("TRUE","TRUE","TRUE","FALSE","TRUE","TRUE","TRUE","TRUE","TRUE","TRUE",
              "TRUE","TRUE","TRUE","TRUE","FALSE","FALSE","TRUE","TRUE","FALSE","TRUE")),
sequence = as.numeric(c(1,2,3,4,4,5,6,7,8,9,10,11,12,13,14,14,14,15,16,16)))

标签: r

解决方案


将您的列转换为 type logicalcumsum首先使用然后添加输入向量的否定以获得所需的输出

x <- as.logical(df$new_activity)
cumsum(x) + !x
# [1]  1  2  3  4  4  5  6  7  8  9 10 11 12 13 14 14 14 15 16 16

推荐阅读