У меня есть два набора точечных данных: x и y .
Для каждой точки в x я хотел бы найтисреднее значение некоторой характеристики его k ближайших соседей в y .
Ниже приведены некоторые фиктивные данные. Для каждого x я ищу среднее значение "Land" для его 3 ближайших соседей y.
library(tidyverse)
library(sf)
x <- st_read("https://data.sfgov.org/api/geospatial/p5b7-5n3h?method=export&format=GeoJSON") %>%
st_transform(2272) %>%
st_make_grid(., cellsize = 10000, square = FALSE) %>%
st_centroid()
y <- st_read("https://data.sfgov.org/api/geospatial/rarb-5ahf?method=export&format=GeoJSON") %>%
st_transform(2272) %>%
st_centroid() %>%
mutate(Land = as.numeric(as.character(aland10))) %>%
select(Land)
Одна вещь, которую я попробовал, это get.knnx () из пакета FNN, который возвращаетматрица x строк и k столбцов, где каждое значение является номером строки для k -го ближайшего объекта в y . Однако я не уверен, что делать дальше.
library(sf)
library(FNN)
index <- get.knnx(st_coordinates(y), st_coordinates(x), 3)$nn.index
head(index)
[,1] [,2] [,3]
[1,] 36 98 163
[2,] 98 163 36
[3,] 98 36 163
[4,] 36 98 163
[5,] 36 98 97
[6,] 98 163 144
Спасибо за вашу помощь.