组附近的矢量元素

时间:2015-04-16 12:16:58

标签: r vector

我有一个矢量,我想做的是"标签"将元素分组,取决于它们的接近程度。

示例数据

c(34, 34, 35, 35, 120, 121, 121, 365, 366)

在这种情况下,我想将34, 34, 35, 35分组到一个组中,然后120, 121, 121分组到另一个组中,最后365, 366分组到另一个组中。

有一些聪明的方法吗?

1 个答案:

答案 0 :(得分:1)

通常可以使用特殊的R包进行群集。但它可能是矢量争论的一个很好的练习:

如果您知道簇数(k)

...你的矢量是(有序的)vec

k <- 3
clusters <- diff(c(0, tail(order(diff(vec)), k-1), length(vec)))

要按群集拆分矢量,请使用split:

split(vec, rep(1:length(clusters), clusters))

或者您只知道最大距离

定义最大差异d

d <- 10
clusters <- diff(c(0, tail(order(diff(vec)), sum(diff(vec)>d)), length(vec)))

要按群集拆分矢量,请使用split:

split(vec, rep(1:length(clusters), clusters))