根据欧氏距离将聚类分配到位置

时间:2016-07-12 19:28:50

标签: r cluster-analysis euclidean-distance

我想基于欧氏距离来计算一个点所属的集群。

clusters    xcor       ycor
1           64.99206   78.48413
2           1102.00000 2466.67500
3           1598.11060 1298.10138
4           499.86441  736.72881

地点是:

location   xcor   ycor
1          511    78
2          1354   2466
3          511    1298

因此它应根据最短距离检查所有位置,它所属的群集。 是否有一个功能/包可以轻松预先形成这个?

1 个答案:

答案 0 :(得分:0)

以下是使用apply()which.min()的解决方案:

apply(locs,1L,function(x) which.min(sqrt((x['xcor']-clus$xcor)^2+(x['ycor']-clus$ycor)^2)));
## [1] 1 2 4

数据

locs <- data.frame(location=c(1L,2L,3L),xcor=c(511L,1354L,511L),ycor=c(78L,2466L,1298L));
clus <- data.frame(clusters=c(1L,2L,3L,4L),xcor=c(64.99206,1102,1598.1106,499.86441),ycor=c(
78.48413,2466.675,1298.10138,736.72881));