渗透聚类

时间:2016-07-16 00:47:43

标签: r

考虑以下分组:

> 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字段?这是一种渗透算法吗?

1 个答案:

答案 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的评论。