首页 > 解决方案 > 更有效地将数据集中的坐标与最近邻匹配 - 并保留名称?

问题描述

我正在尝试将企业与同一数据集中最近的企业进行匹配。数据集由企业名称、坐标和星级评分(满分 5 分)组成。每个企业、每个季度、每年(大约 5 年)都有一行。虽然我只是为最近的企业解决了这个问题,但我需要根据不同的标准再做大约 100 次。(每年分成不同的季度,匹配具有相同评级的邻居等)。

现在我能想到的就是根据标准将数据集拆分为仅包含我需要的业务,然后像这样进行匹配——但是做 100 次,然后重新加入数据,听起来……是个糟糕的主意。我对 R 中的空间内容不太熟悉,所以如果有人有任何想法或帮助,那就太棒了。

同样,对于我拥有的现有代码(如下),这为我提供了最近邻居的 ID #,但没有提供名称。有没有办法匹配邻居,同时保留除了 ID # 之外的其他列?

我已经拥有的代码如下。我在用着

library(RANN)
sp.data <- data
coordinates(sp.data) <- ~lon+lat
sf.data <- st_as_sf(sp.data)
dist_m <- st_distance(sf.data, sf.data)
index <- apply(dist_m, 1, order)
index <- index[2:nrow(index), ]
index <- index[1, ]
index2 <- as.data.frame(index)
index2 <- data.frame(t(index2))

然后,这为我提供了最近邻居的 ID#。如您所见,使用不同的数据(根据评级标准和季度等从原始数据中拆分)一遍又一遍地运行它并不是很有效。任何帮助表示赞赏。谢谢!

标签: r

解决方案


推荐阅读