Отображение моих данных на карту области почтового индекса в R - PullRequest
0 голосов
/ 26 февраля 2020

Мои данные примерно такие:

ZIPcode Cases   longi   lati
43613   1   -83.604452  41.704307
44140   1   -81.92148   41.48982
46052   1   -86.470531  40.051603
48009   22  -83.213883  42.544619
48017   6   -83.151815  42.535396
48021   7   -82.946167  42.463894
48025   19  -83.265758  42.523195

Я хочу получить карту, похожую на эту (если вы можете ее видеть) в R. Схема должна быть в виде почтовых индексов, а штриховка должна соответствовать номеру случаев становится все темнее с ростом случаев.

Я очень плохо знаком с R. Попробовал много кода, который нашел в Интернете, но не могу получить то, что хочу. Любая помощь приветствуется. Можно ли это сделать в базе SAS? Спасибо!

введите описание изображения здесь

1 Ответ

0 голосов
/ 27 февраля 2020

Определенно вы можете сделать это в R, я собрал репрезенциум (воспроизводимый пример) для вас. Ключевые моменты:

  1. Вам необходимо загрузить в файл R a .shp (или .geojson, .gpkg, et c.). Это фактический файл с контуром вашей карты. Для ZIPCODES я нашел пакет R, tigris, который сделает это за вас, если нет, вам придется загрузить его самостоятельно.
  2. Для обработки объектов отображения (load, transform, .et c) пакет sf - ваш лучший друг.
  3. Для построения графиков в этом примере я использовал cartography, но Вы можете использовать несколько различных пакетов, например ggplot2 или tmap.

Последняя строка такова, что, учитывая ваши данные (и если я не ошибся с ZIPCODE), карта в качестве тот, который вы показали (карта choropleth), возможно, не самый лучший вариант. Посмотрите здесь , чтобы увидеть другие альтернативы.

library(sf) #Overall handling of sf objects
library(cartography) #Plotting maps package

#1. Create your data
yourdata <- data.frame(ZCTA5CE10=c("43613", "44140", "46052",
                                "48009","48017", "48021","48025"),
                    Cases=c(1,1,1,22,6,7,19)
                    )

#2. Download a shapefile (shp,gpkg,geojson...)
library(tigris) #For downloading the zipcode map
options(tigris_use_cache = TRUE)
geo <- st_as_sf(zctas(cb = TRUE, starts_with = yourdata$ZCTA5CE10))

#Overall shape of USA states
states <- st_as_sf(states(cb=TRUE))
#For plotting, all the maps should have the same crs
states=st_transform(states,st_crs(geo))

#3. Now Merge your data
yourdata.sf=merge(geo,yourdata)

#4. Plotting
par(mar=c(1,1,1,1))
ghostLayer(yourdata.sf)
plot(st_geometry(states), add=TRUE)
choroLayer(yourdata.sf,
           var="Cases",
           add=TRUE,
           border = NA,
           legend.pos = "right",
           legend.frame = TRUE)
layoutLayer(title = "Cases by ZIPCODE",
            theme = "blue.pal",
            scale = FALSE,
            sources = "Source; your question on SO",
            author = "by dieghernan, 2020"
            )

Создано в 2020-02-27 пакетом представ (v0.3.0)

...