Пакет spdep
имеет разные методы для расчета списка соседей.Лучше сначала преобразовать ваш фрейм данных в пространственный объект.Это обеспечит правильную интерпретацию координат.
dataSp <- read.table( text = '
SPECIES LATITUDE LONGITUDE
speciesA -85 134
speciesB 34 2
speciesB 42 3
speciesB 45 5
speciesC -2 80
speciesC -5 79',
header = TRUE )
library(spdep)
coordinates(dataSp) <- ~ LONGITUDE + LATITUDE
Соседи обычно рассчитываются по полигонам, поскольку общие критерии являются основными критериями.Для очков вы можете сначала сделать триангуляцию Делоне, а затем вычислить окрестности.Пакеты 'rgeos' помимо прочего имеют функцию для этого:
delau <- rgeos::gDelaunayTriangulation(dataSp)
neib <- poly2nb(delau)
Пакет spdep имеет функцию, которая делает это напрямую, генерируя сначала графовый объект.См. ?graphneigh
для получения дополнительных параметров:
grph <- relativeneigh(coordinates(dataSp))
neib <- graph2nb(grph)
Вместо использования границ можно использовать k ближайших в качестве критериев:
knea <- knearneigh(coordinates(dataSp), longlat = TRUE)
neib <- knn2nb(knea)
Или использовать диапазон расстояний:
neib <- dnearneigh(coordinates(dataSp), 0, 10, longlat = TRUE)