Создание пользовательских регионов продаж в США с использованием почтовых индексов в R - PullRequest
0 голосов
/ 12 января 2020

Я пытаюсь создать собственную карту региона продаж для своей компании. У нас есть пользовательские регионы, не основанные на штатах, а набор почтовых индексов. Как создать пользовательские регионы продаж в США, используя почтовые индексы в R. Мои почтовые индексы выглядят примерно так, как показано ниже. Я хочу, чтобы у каждого региона продаж был свой цвет, чтобы различать регионы.

У меня есть карта США со следующим:

map_us <- tm_shape(us_states) +
  tm_fill() + tm_layout(frame = FALSE)

Как мне наложить информацию о почтовых индексах на эту карту раскрасить каждый регион цветом?

enter image description here

1 Ответ

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

Это, безусловно, выполнимо, но без приличного набора данных мне приходилось придумывать некоторые по ходу работы.

library(tigris)
library(tidyverse)
library(sf)

# get US zipcode shapefile
# This takes a while to download
zip <- zctas(cb = TRUE)

# Transform to an sf object, and change projection
zip_sf <- st_as_sf(zip) %>%
  filter(stringr::str_starts(ZCTA5CE10, '3')) %>% ## returns some of southeast US
  st_transform(5070) %>%
  st_simplify() %>%
  st_transform(4326)

# Wholly made-up points, bufferd by 150km
regions <- tribble(
  ~region, ~lon, ~lat,
  'one', -88, 32,
  'two', -82, 28,
  'three', -86, 34,
  'four', -82, 31
) %>% st_as_sf(coords = c('lon', 'lat')) %>%
  st_set_crs(4326) %>%
  st_transform(5070) %>%
  st_buffer(150000) %>%
  st_transform(4326)

# Here the data is joined spatially.
# Your data should be joined (probably with a left-join)
# using the zip code columns.
joined <- st_join(zip_sf, regions, join = st_within)

ggplot(joined) + 
  geom_sf(aes(fill = region), size = .1) + 
  scale_fill_discrete(na.value = 'white')


Я использовал ggplot2 для графика, но tmap, mapview, et c должно работать так же хорошо.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...