如何在不包含其他列的名称的情况下使用数据帧子集



(为糟糕的标题道歉,英语不是我的母语,我想不出一个好的方法来总结这个问题。(

我有一个各种美国县变量的数据集和一个美国县的形状文件。我已经把两者合并了,没问题,现在我试图说明一个特定州各县的变量。但是,当我试图将我的数据限制在特定州的县时,它不仅选择了该州的县,还选择了其他州与该州同名的所有县。我只是不明白它为什么这么做,从我所能告诉的情况来看,它真的应该只选择指定州的县。

我正在使用sf、tmap、tmaptools、dplyr、ggplot和传单包。这是我正在使用的代码:

mydata <- readr::read_csv("county_facts.csv")
mymap <- st_read("cb_2014_us_county_500k.shp")
map_and_data <- inner_join(mymap, mydata, by = c("NAME" = "area_name"))
tm_shape(map_and_data[map_and_data$state_abbreviation == "SC",])+
tm_polygons("AGE135214", id = "NAME", palette = "Greens")

(县名称的列是shapefiles中的"NAME"和数据集中的"area_ NAME"(

这里AGE135214是我绘制的变量,NAME是县名,在这个例子中,我试图为南卡罗来纳州绘制它。我试图通过更改数据和形状文件的合并来解决问题:

map_and_data2 <- inner_join(mymap, mydata[mydata$state_abbreviation=="SC",], by = c("NAME" = "area_name"))

但这只会导致新的合并数据帧包含错误的名称。

我是编程新手,所以如果有一个非常明显的解决方案,我很抱歉。非常感谢您的帮助!

数据和形状文件来自https://www.kaggle.com/benhamner/2016-us-election,如果有帮助的话。

欢迎。当我第一次开始处理县级数据时,我就遇到了这个问题。问题在于;名称";以及";区域名称"完全不同(只需快速浏览一下,你就会发现area_ name中有很多额外的单词,比如"country",这些单词会阻止加入(。我发现在使用郡数据时使用fips代码进行联接是最佳做法。地图数据没有准备好fips列,但它可以很容易地构建。我已经在下面实现了它,它似乎对我有效。我希望你今天过得愉快,并祝你在项目上好运。

mymap$fips <- as.numeric(paste0(mymap$STATEFP, mymap$COUNTYFP))
map_and_data <- left_join(mymap, mydata, by = "fips")

tm_shape(map_and_data %>% filter(state_abbreviation == "SC"))+
tm_polygons("AGE135214", id = "NAME", palette = "Greens")

相关内容

最新更新