Я могу предложить вам следующее (не отмечено, потому что у меня нет доступа к пакету urbnmapr
с моей версией R).
Задача 1
Если вам конкретно нужны полигоны, я думаю, что лучше всего было бы присоединить фрейм данных к объекту из шейп-файла.
Если вы все еще хотите сделать это самостоятельно, вам нужно сделать две вещи:
- Преобразовать
tibble
в пространственный объект с точечной геометрией - Агрегировать точки по состоянию
sf
пакет может сделать оба. Для первого шага (легкий) используйте функцию sf_as_sf
.
library(sf)
states
states_spat <- states %>% st_as_sf(., coords = c("lon","lat"))
Для второго шага вам нужно будет объединить геометрию. Я могу предложить вам что-то, что даст вам MULTIPOINT
геометрию, а не полигоны. Чтобы преобразовать в полигоны, вы можете найти эту нить , чтобы помочь
states_spat <- states_spat %>% group_by(state_name) %>%
dplyr::summarise(x = n())
Задача 2
Это стандартное соединение, основанное на общих атрибутах между вашими данными и пространственным объект (например, код штата). Функции merge
или *_join
из dplyr
работают с sf
данными так же, как и с tibbles
. У вас есть элементы там
Кстати, я думаю, вам лучше сделать это, чем создавать свои собственные многоугольники из ряда точек.