library(dplyr)
library(raster)
dat.shp <- getData('GADM', country='BRA', level = 1)
length(dat.shp@data$ID_1) # 27
Я хочу найти для каждого администратора (ID_1)
, какая широта другого ID_1 является ближайшей,
df <- data.frame(ID_1 = dat.shp@data$ID_1, lat = coordinates(dat.shp)[, 2])
df$closest.ID <- NA
for(i in 1:nrow(df)){
temp <- df[i, ]
temp.dat <- df[-i, ]
sub <- temp.dat %>% dplyr::mutate(dif = lat - temp$lat) %>%
dplyr::filter(dif == min(dif))
df[df$ID_1 == temp$ID_1, "closest.ID"] <- sub$ID_1
rm(sub, temp.dat, temp)
}
Это, очевидно, неправильно, поскольку дает мне 21 для всего ID_1
.