使用zipcodeR从area_code_list获取区号

zqdjd7g9  于 2023-10-13  发布在  其他
关注(0)|答案(1)|浏览(67)

我使用{zipcodeR}包。我的目标是获得一个地区代码到邮政编码的引用表,以合并该包的输出 Dataframe 中包含的其余数据,并连接到地区代码上的其他数据。
但是,area_code_list列的数据类型为blob。我不熟悉这种数据类型,也不知道如何提取它。无论是软件包的小插曲还是文档,似乎都没有为这个任务指出任何帮助函数。看看str(),似乎底层类型是raw
理想情况下,最终输出应该是每个邮政编码-区号组合对应一行。我很感激任何帮助。

search_state("CA") %>% 
  filter(zipcode %in% c("90201", "90210")) %>% 
  select(zipcode, area_code_list)

# Current output
# # A tibble: 2 × 2
# zipcode area_code_list
# <chr>           <blob>
# 90201       <raw 15 B>
# 90210       <raw 26 B>

# Ideal output
# # A tibble: 3 × 2
# zipcode area_code_list
# <chr>           <chr>
# 90201           323
# 90210           310
# 90210           424
zsohkypk

zsohkypk1#

zipcodeR似乎从这个US Zipcode Project获取其ZCTA数据库。看看项目的python包内部,area_code_list在python代码中被输入为CompressedJSONType
我猜的,但它看起来像是用Gzip压缩的。我们可以使用jsonlite来解析列来验证这一点:

zipcodeR::search_state("CA") %>% 
  dplyr::filter(zipcode %in% c("90201", "90210")) %>% 
  dplyr::select(zipcode, area_code_list) %>%
  dplyr::mutate(area_code_list = sapply(area_code_list, jsonlite::parse_gzjson_raw)) %>%
  tidyr::unnest_longer(col = area_code_list)

#> # A tibble: 4 × 2
#>   zipcode area_code_list
#>   <chr>   <chr>         
#> 1 90201   323           
#> 2 90210   310           
#> 3 90210   323           
#> 4 90210   424

相关问题