Menda turli uzunlikdagi ikkita ma'lumotlar to'plami (csv formati) bor, ularning ikkalasida ham manzillar, ham koordinatalar (log va lat) mavjud. Ikkalasi ham shunday shaklga ega (misol A ma'lumotlar to'plami):
ID Address lat long
1 Lausitzer Strasse, 20/22, 2991, Lauta, Germany 51.46228 14.09522
2 Parkstrasse, 6, 2991, Lauta, Germany 51.4631141 14.1109184
3 Parkstrasse, 6, 2991, Lauta , Germany 51.4631141 14.1109184
4 Arndtstrasse, 27, 2991, Lauta, Germany 51.44664 14.10287
5 Goethestrasse, 13, 4746, Hartha, Germany 51.0965679 12.9725834
6 Bahnhofstrasse, 3, 3a, 3b, 4886, Beilrode, Germany 51.57183 13.06729
7 Haefenmarkt, 11, 98673, Eisfeld, Germany 50.42697 10.90871
Yuqorida aytib o'tilganidek, mening boshqa ma'lumotlar to'plamim (B) yuqoridagiga o'xshaydi (A). Men A ma'lumotlar to'plamidagi har bir nuqta uchun eng yaqin manzilni topish yo'lini topishga harakat qilaman.
A ma'lumotlar to'plami juda kichik (22 ta manzil), ammo B ma'lumotlar to'plami juda katta (8500 manzil).
Men R uchun yangiman va ba'zi maslahatlar juda qadrlanadi.
rahmat.
Tahrirlash:
Men kodni shunday ishladim (pastda), ammo, nafaqat eng yaqin, balki ikkinchi eng yaqin va hokazo qo'shnini ham qidirishning yo'li bormi?
list1 <-read.csv("geocoded.csv",sep=",",header=TRUE)
list2 <- read.csv("geocoded2.csv", sep=",", header=TRUE)
library(geosphere)
library(data.table)
library(dplyr)
mat <- distm(list1[,c('long','lat')], list2[,c('long','lat')],
fun=distVincentyEllipsoid)
# assign the name to the point in list1 based on shortest distance in the
matrix
list1$locality <- list2$locality[apply(mat, 1, which.min)]
#list2a <- list2 %>% group_by(locality) %>% summarise_each(funs(mean)) %>%
ungroup()
#mat2 <- distm(list1[,c('long','lat')], list2a[,c('long','lat')],
fun=distVincentyEllipsoid)
#list1$locality2 <- list2a$locality[apply(mat2, 1, which.min)]
list1
#Plot distance
#list1$near_dist <- apply(mat2, 1, min)
list1$near_dist <- apply(mat, 1, min)
list1
write.table(list1, "C:/v", sep=",", row.names=FALSE)
Rahmat.
readfunksiyalardan birini ishlatgan bo'lsangiz, ma'lumotlaringiz avtomatik ravishdadata.frameda saqlanadi. Agar sizfreaddan foydalansangiz, udata.tablebo'lishi mumkin. - person Pierre L   schedule 27.10.2016