考虑以下分组:
> data.frame(x = c(3:5,7:9,12:14), grp = c(1,1,1,2,2,2,3,3,3))
x grp
1 3 1
2 4 1
3 5 1
4 7 2
5 8 2
6 9 2
7 12 3
8 13 3
9 14 3
我们说我不知道grp
值,但只有一个向量x
。生成grp
值的最简单方法是什么,本质上是一个阈值内的值组的id字段?这是一种渗透算法吗?
答案 0 :(得分:1)
一种选择是将下一个与当前值进行比较,并检查差异是否大于1,并获得累积总和。
df1$grp <- cumsum(c(TRUE, diff(df1$x) > 1))
df1$grp
#[1] 1 1 1 2 2 2 3 3 3
编辑:来自@ geotheory的评论。