Как использовать distm (), чтобы получить расстояние между каждой координатой в первом кадре данных до всех координат в другом кадре данных и записать их? - PullRequest
0 голосов
/ 09 января 2020

первый кадр данных имеет 5 координат, а второй кадр данных имеет еще 5 координат.

от:

data frame 1 <- data.frame(longitude = c(-1.482156, -1.482318, -1.482129, -1.484275, -1.485866), 
                           latitude= c(54.90083, 54.90078, 54.90077, 54.90011, 54.89936),
                           ID = c(A,B,C,D,E))

data frame 2 <- data.frame (longitude  =c( -1.482880, -1.485735, -1.485770, -1.485913),
                            latitude = c( 54.89935, 54.89935, 54.89879, 54.89902),
                            ID = c(1,2,3,4,5))

до:

Результат для предоставления матрицы расстояния между двумя кадрами данных.

1 Ответ

0 голосов
/ 09 января 2020

Мы можем просто удалить последний столбец 'ID' и применить distm

library(geosphere)
distm(df2[-3], df1[-3])
#     [,1]     [,2]     [,3]     [,4]      [,5]
#[1,] 171.1779 163.2218 165.2558 123.1550 191.56772
#[2,] 282.5995 270.9150 280.1868 126.2177   8.47761
#[3,] 324.5419 313.2399 321.1614 175.4751  63.75154
#[4,] 314.1523 302.6183 311.2599 160.5186  37.96928

data

df1 <- structure(list(longitude = c(-1.482156, -1.482318, -1.482129, 
-1.484275, -1.485866), latitude = c(54.90083, 54.90078, 54.90077, 
54.90011, 54.89936), ID = structure(1:5, .Label = c("A", "B", 
"C", "D", "E"), class = "factor")), class = "data.frame", row.names = c(NA, 
-5L))

df2 <- structure(list(longitude = c(-1.48288, -1.485735, -1.48577, -1.485913
), latitude = c(54.89935, 54.89935, 54.89879, 54.89902), ID = c(1, 
2, 3, 4)), class = "data.frame", row.names = c(NA, -4L))
...