Я работаю с набором данных такси Нью-Йорка. В наборе данных есть столбцы, включающие дату и время, широта / долгота захвата, широта / долгота и т. Д. Теперь я хочу изменить геокодирование широты / долготы, чтобы найти район / район.
У меня есть два кадра данных. 1) Первый фрейм данных содержит все точки, которые я хочу классифицировать с названием ближайшей окрестности Нью-Йорка. 2) Второй фрейм данных содержит названия окрестностей и их центроиды.
Я покажу вам небольшой пример.
df_points_to_classify: Нажмите здесь, чтобы загрузить оригинальный csv
longitude latitude
<dbl> <dbl>
1 -73.99037 40.73470
2 -73.98078 40.72991
3 -73.98455 40.67957
4 -73.99347 40.71899
df_neighborhood_names_and_their_centroids: Нажмите здесь, чтобы загрузить оригинальный csv
longitude latitude neighborhood
<dbl> <dbl> <chr>
1 -73.8472005205491 40.89470517661004 Wakefield
2 -73.82993910812405 40.87429419303015 Co-op City
3 -73.82780644716419 40.88755567735082 Eastchester
4 -73.90564259591689 40.895437426903875 Fieldston
Чтобы назначить одну точку окрестности, я должен рассчитать расстояние от точки до центра тяжести каждой окрестности,Очевидно, что точка будет принадлежать окрестности с кратчайшим расстоянием.
Ожидаемый результат состоит из добавления столбца к кадру данных классифицируемых точек, содержащего окрестность, которой принадлежит каждая точка.
ожидаемый результат:
longitude latitude neighborhood
<dbl> <dbl> <chr>
1 -73.99037 40.73470 Fieldston
2 -73.98078 40.72991 Co-op City
3 -73.98455 40.67957 etc...
4 -73.99347 40.71899 etc...
Я хотел бы использовать вычислительно эффективный метод, потому что база данных моих точек для классификации очень большая (более одного гигабайта). По этой причине я использую искру на R. Файл был загружен таким образом.
library(sparklyr)
sc <- spark_connect(master = "local")
df_points_to_classify <- spark_read_csv(sc, "D:\df_points_to_classify.csv")
Можно ли использовать dplr для решения этой проблемы? Я получу лучший ответ с 10 долларами в BTC
РЕДАКТИРОВАТЬ: это решение не применяется при использовании свечи, потому что результат df_points_to_classify$any_variable
равен NULL
library(spatialrisk)
ans <- purrr::map2_dfr(df_points_to_classify$longitude,
df_points_to_classify$latitude,
~spatialrisk::points_in_circle(df_neighborhood_names_and_their_centroids, .x, .y,
lon = longitude,
lat = latitude,
radius = 2000000)[1,])