使用zipcodeR从area_code_list获取区号

问题描述 投票:0回答:1

我正在使用

{zipcodeR}
包。我的目标是获得一个区号到邮政编码的参考表,以合并该包的输出数据帧中包含的其余数据,以连接到区号上的其他数据。

但是,

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


r blob raw zipcoder
1个回答
0
投票

zipcodeR
似乎从这个 US Zipcode Project 获取其 ZCTA 数据库。环顾一下项目的 python 包内部结构,我相信
area_code_list
blob 是 Gzip 压缩的 JSON 列表。

我们可以使用

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 
© www.soinside.com 2019 - 2024. All rights reserved.