r - 根据第二列以连续序列分配值
问题描述
我想将一个序列分配给一列 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)))
解决方案
将您的列转换为 type logical
,cumsum
首先使用然后添加输入向量的否定以获得所需的输出
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
推荐阅读
- java - 计算每个用户输入?
- android - 颤振:java.lang.RuntimeException Logcat
- knex.js - 传递对象数组时,Knex 的 whereIn 的行为类似于 whereNotIn,这是预期的行为吗?
- testing - 自动化 Gatling 测试场景
- python - 用 Python 求解联立方程和积分
- java - 如何在 Linux 上移动 Java 安装?
- qt - 来自 QtWidget/QtWindow 的无效 VkSurfaceKHR 句柄
- django - 具有大量具有清晰可见模式的字段的模型:声明模型字段时是否可能出现循环?
- python - 在 Django REST 框架中导入 JWT RSA 算法的签名和验证密钥
- typescript-eslint - 未找到规则“@typescript-eslint/no-shadow”的定义