首页 > 解决方案 > 使用 ID 内的条件重新创建增量值

问题描述

所以我有2个字段的数据,ID和时间戳

ID Time
1 12
1 15
1 16
2 12
2 11

如果时间和前一次之间的差异低于 2,例如在同一 ID 内,我想增加,除非保持相同的值并在 ID 不同时从 1 重新开始。

期望的输出:

ID Time ID_SESSION
1 12 1
1 15 1
1 16 2
2 12 1
2 11 1

在 dplyr/sparklyr 中需要使用 R/ 来实现 spark

标签: rapache-sparkdplyrsparklyr

解决方案


使用基础 R 的单线,

with(df, ave(Time, ID, FUN = function(i)cumsum(c(TRUE, diff(i) <= 2))))
#[1] 1 1 2 1 2

推荐阅读