我有一个数据集,其中包含与不同城市和州的房地产相关的信息。当前看起来像这样:
Id| StreetName | City | State
=================================================
1 | 100 Railroad Ave | Elkton | MD
2 | 414 Grant St | Pittsburgh | PA
3 | 1400 John F Kennedy Blvd | Philadelphia | PA
4 | 800 N French St | Wilmington | DE
r中是否有一个可用于获取每行邮政编码的软件包?我想根据邮政编码创建一个密度图。我当前的数据包括数千行。
有可能,但需要美国邮政服务提供的(免费)帐户。
使用rusps软件包(更多信息:https://github.com/hansthompson/rusps)
输出有些重复,该函数似乎不是可传递的,但在您发布的数据上效果很好。清理%join到您的数据(或单独使用)应该不太困难。
addresses <- tibble::tribble(
~Id, ~StreetName, ~City, ~State,
1, "100 Railroad Ave", "Elkton", "MD",
2, "414 Grant St", "Pittsburgh", "PA",
3, "1400 John F Kennedy Blvd", "Philadelphia", "PA",
4, "800 N French St", "Wilmington", "DE"
)
# devtools::install_github('hansthompson/rusps')
library(rusps)
library(XML)
username <- 'XXXYYYYYZZZZ' # get this quickly and freely
#by signing up at https://registration.shippingapis.com/ (not commercial).
output <- validate_address_usps(street = addresses$StreetName,
city = addresses$City,
state = addresses$State,
username = username)
output
Address2 City State Zip5 Zip4 .attrs
1 100 RAILROAD AVE ELKTON MD 21921 5537 0
2 414 GRANT ST PITTSBURGH PA 15219 2409 1
3 1400 JOHN F KENNEDY BLVD PHILADELPHIA PA 19107 3200 2
4 800 N FRENCH ST WILMINGTON DE 19801 3594 3
5 NA NA NA NA NA 0
6 100 RAILROAD AVE ELKTON MD 21921 5537 0
7 414 GRANT ST PITTSBURGH PA 15219 2409 0
8 1400 JOHN F KENNEDY BLVD PHILADELPHIA PA 19107 3200 0
9 100 RAILROAD AVE ELKTON MD 21921 5537 1
10 414 GRANT ST PITTSBURGH PA 15219 2409 1
11 100 RAILROAD AVE ELKTON MD 21921 5537 0
12 414 GRANT ST PITTSBURGH PA 15219 2409 0
13 1400 JOHN F KENNEDY BLVD PHILADELPHIA PA 19107 3200 0
14 800 N FRENCH ST WILMINGTON DE 19801 3594 0
出于某种原因,所有返回的列都是列表列。清理:
unnest(output, cols = everything()) %>%
group_by(Address2) %>%
slice(1)
# A tibble: 5 x 6
# Groups: Address2 [5]
Address2 City State Zip5 Zip4 .attrs
<chr> <chr> <chr> <chr> <chr> <chr>
1 100 RAILROAD AVE ELKTON MD 21921 5537 0
2 1400 JOHN F KENNEDY BLVD PHILADELPHIA PA 19107 3200 2
3 414 GRANT ST PITTSBURGH PA 15219 2409 1
4 800 N FRENCH ST WILMINGTON DE 19801 3594 3
5 NA NA NA NA NA 0