1

在 RI 中有一个如下所示的数据框:

head(map)

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

我想在地图上绘制频率。

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

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

library(dplyr)

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

并弹出此错误消息:

“Fehler:by不能包含stateLHS Run 中缺少的连接列,rlang::last_error()以查看错误发生的位置。”

有没有办法只用州名来绘制我的数据?

4

1 回答 1

1

看起来您的data.frame“地图”没有名为“状态”的列,因此连接命令失败。我无法对此进行测试,因为我没有您正在使用的确切数据集,但它可能只是工作,更改您的命令如下:

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

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

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

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

于 2020-03-19T16:45:50.483 回答