我如何仅按名称映射美国各州?在 R

How do I map us-states just by names? In R

在 R 中,我有一个如下所示的数据框:

head(map)

mapstates mapdelay 
1    Alabama      457        
2     Alaska      374       
3    Arizona     2852       
4   Arkansas      339        
5 California    11609       
6   Colorado     3298        

我想在地图上标出频率。

搜索 www 我找到了 usmap 包 f.e。 .但是我找到的所有解决方案都需要我没有的纬度和经度数据。

使用 usmap 包和 dplyr 我尝试连接 从 usmap 到我的数据框的纬度和经度数据:

library(dplyr)

newdata<- left_join(mapstates, delaymap, by= "state")

并弹出此错误消息:

"Fehler: by 不能包含 LHS 中缺少的连接列 state 运行 rlang::last_error() 查看错误发生的位置。"

有什么方法可以只用州名来绘制我的数据吗?

您的 data.frame“地图”似乎没有名为“states”的列 因此加入命令失败。我无法测试这个,因为我没有 有你正在使用的确切数据集,但它可能只是工作, 更改您的命令如下:

newdata <- left_join(mapstates, delaymap, by= c("mapstates" = "state"))

我执行了以下代码,以在我的环境中重现您的想法并且 它确实有效。我正在使用 usmap 中的“statepop”data.frame 将数据加入其中的包,因为它具有 fips 所需的代码 包,以识别州(或县)。另请参阅文档 ?plot_usmap().

data 参数
library(dplyr)
library(usmap)
library(ggplot2)

map_df <- tibble::tribble(
      ~"mapstates",~"mapdelay",
  "Alabama"  ,   457,
  "Alaska"  ,   374,
  "Arizona"  ,  2852,
  "Arkansas"  ,   339,
  "California"  , 11609,
  "Colorado"  ,  3298
  )

new_df <- left_join(statepop, map_df, by = c("full" = "mapstates"))

plot_usmap(data = new_df, values = "mapdelay", color = "white") + 
  scale_fill_continuous(
    low = "white", high = "red", name = "Delay", label = scales::comma
  ) + theme(legend.position = "right")

注意:有些州没有颜色,因为我没有你的完整数据集。