У меня есть 2 больших кадра данных, содержащих различные переменные, мне нужно добавить переменную distance_from_capital_city , которая будет определена как следующие:
Один кадр данных имеет всю страну названия и столицы и их координаты (cap_coordinances в примере ниже), и у меня есть другой фрейм данных, в котором есть некоторые переменные в тех же странах, иногда в столице, иногда нет.
Мне нужно добавить переменную distance_from_capital_city в блок данных real_data (в примере ниже), и результат должен выглядеть следующим образом:
Первые 4 строки переменной distance_from_capital_city в кадре данных real_data должен быть равен нулю (или некоторому небольшому числу, потому что координаты не должны точно совпадать, а ошибка округления и т. Д. c.), А последняя пятая строка должна содержать расстояние от Барселоны до Матрида ( grouped_by страна). Расстояние должно измеряться в километрах от столицы или любого евклидова расстояния или любого другого подходящего показателя.
Используя, например, эту функцию:
library(geosphere) distm(c(lon1, lat1), c(lon2, lat2), fun = distHaversine)
Я привел пример результата (цифры для иллюстрации)
library(tibble)
cap_coordinances =
tribble(
~country_txt, ~city, ~longitude, ~latitude,
"Greece", "Athens", 23.8, 37.9,
"Italy", "Rome", 12.5, 41.9,
"Netherlands", "Amsterdam", 4.90, 52.4,
"Spain", "Madrid", -0.743, 41.0,
)
real_data =
tribble(
~country_txt, ~city, ~longitude, ~latitude,
"Greece", "Athens", 23.762728, 37.99749,
"Italy", "Rome", 12.490069, 41.89096,
"Netherlands", "Amsterdam", 4.90, 52.4,
"Spain", "Madrid", -0.743, 41.0,
"Spain", "Barcelona", 2.15, 41.3
)
result =
tribble(
~country_txt, ~city, ~longitude, ~latitude, ~distance_from_capital_city,
"Greece", "Athens", 23.762728, 37.99749, "0 or small number",
"Italy", "Rome", 12.490069, 41.89096, "0 or small number",
"Netherlands", "Amsterdam", 4.90, 52.4, "0 or small number",
"Spain", "Madrid", -0.743, 41.0, "0 or small number",
"Spain", "Barcelona", 2.15, 41.3, 3500
)
Я не могу решить эту проблему самостоятельно, поэтому я хотел бы попросить любого совета
Данные, которые я использую, опубликованы c можно загрузить здесь: