1. ホーム
  2. r

[解決済み] R: 通り名、都市名、州名だけから郵便番号を取得する

2022-03-07 20:38:01

質問

私は、さまざまな都市や州の不動産に関連する情報を持つデータセットを持っています。現在、このような状態になっています。

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のパッケージはありますか?郵便番号から密度マップを作りたいのですが。私の現在のデータには、数千の行が含まれています。

解決方法を教えてください。

可能ですが、US Postal Serviceのアカウント(無料かつ簡単)が必要です。

ruspsパッケージを使用する(詳細はこちら。 https://github.com/hansthompson/rusps )

出力は少し繰り返しで、関数はパイプで接続できないようですが、投稿されたデータではうまく動作しました。 しかし、あなたが投稿したデータではうまくいきました。

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