我正在使用
{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
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