【问题标题】:How do I map us-states just by names? In R我如何仅按名称映射我们的州?在 R 中
【发布时间】:2020-03-19 16:13:39
【问题描述】:

在 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() 看看哪里出错了。”

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

【问题讨论】:

    标签: r dictionary dplyr usmap


    【解决方案1】:

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

    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")
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-17
      • 1970-01-01
      • 1970-01-01
      • 2023-03-14
      • 1970-01-01
      • 1970-01-01
      • 2021-11-20
      • 1970-01-01
      相关资源
      最近更新 更多