Что эквивалентно map_data с кодом FIP для создания карты R ggplot по округам

У меня есть карта Джорджии по округам с частотами, которая частично работает с использованием эквивалентного соединения по названию округа. Некоторые округа отказываются от участия из-за различий в названиях. Мне нужно использовать код FIPS вместо имени.

Как я могу изменить код для присоединения на основе кода FIP, а не имени?

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

# Input load. Please do not change #
`dataset` = read.csv('C:/temp/input_df_df0e8484-0924-4613-9af6-2fdc4b3e67ad.csv', check.names = FALSE, encoding = "UTF-8", blank.lines.skip = FALSE);
# Original Script. Please update your script content here and once completed copy below section back to the original editing window #
library(tidyverse)
library(readr)
library(maps)

frequency_final <- dataset%>% 
                        mutate(county_join = tolower(str_remove_all(County, " County")))  

state<- map_data("county",dataset$State,)
state_final <- inner_join(state, frequency_final ,by=c('subregion' = 'county_join'))

state_base <- ggplot(data = state_final , mapping = aes(x = long, y = lat, group = subregion)) + 
coord_fixed(1.3) + 
geom_polygon(color = "black", fill = "gray")

ditch_the_axes <- theme(
axis.text = element_blank(),
axis.line = element_blank(),
axis.ticks = element_blank(),
panel.border = element_blank(),
panel.grid = element_blank(),
axis.title = element_blank()
)

state_base + 
geom_polygon(aes(fill =ID), color = "white") +
geom_polygon(color = "black", fill = NA) +
theme_bw() +
ditch_the_axes +
scale_fill_gradientn(colours = rev(rainbow(7)),
               breaks = c(2, 4, 10, 100, 1000, 10000),
               trans = "log10")

Ссылка на образец набора данных с кодами FIP находится здесь https://drive.google.com/file/d/1GrDS8qq7sgQII3-s5EmX-8n304P1ujWa/view?usp=sharing


person John Bowyer    schedule 13.04.2019    source источник
comment
В нескольких пакетах, связанных с картированием, есть таблицы поиска кодов округов FIPS. В maps это набор данных county.fips. Присоединяйтесь к этому с вашими данными. Кроме того, для вас предпочтительнее разместить образец своих данных в сообщении, а не людям, которым нужно загрузить неизвестный файл от третьего лица.   -  person camille    schedule 13.04.2019


Ответы (1)


Я смог присоединиться к county.fips в пакете карт, чтобы создать карту.

library(tidyverse)
library(readr)
library(maps)
library(sringr)

data(county.fips)

frequency_final <- dataset%>% 
                        mutate(county_join = tolower(str_remove_all(County, " County"))) %>% 
                        mutate(fips_join = as.integer(paste(StateFIPSCode, str_pad(CountyFipsCode,3,pad="0"),sep="")))

state<- map_data("county",dataset$State)

state2  <- state %>%
  mutate(polyname = paste(region,subregion,sep=",")) %>%
  left_join(county.fips, by="polyname")

state_final <- inner_join(state2, frequency_final ,by=c('fips' = 'fips_join'))

state_base <- ggplot(data = state_final , mapping = aes(x = long, y = lat, group = subregion)) + 
coord_fixed(1.3) + 
geom_polygon(color = "black", fill = "gray")

ditch_the_axes <- theme(
axis.text = element_blank(),
axis.line = element_blank(),
axis.ticks = element_blank(),
panel.border = element_blank(),
panel.grid = element_blank(),
axis.title = element_blank()
)

state_base + 
geom_polygon(aes(fill =ID), color = "white") +
geom_polygon(color = "black", fill = NA) +
theme_bw() +
ditch_the_axes +
scale_fill_gradientn(colours = rev(rainbow(7)),
               breaks = c(2, 4, 10, 100, 1000, 10000),
               trans = "log10")

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

person John Bowyer    schedule 13.04.2019