首页 > 解决方案 > 将街道地址变成组件

问题描述

我有从 SQL 中提取的地址数据,现在已加载到 R 中。我正在尝试提取各个组件,即查询末尾的 ZIP-CODE(状态也很好)。我希望 ZIP-CODE 和 State 出现在新的单独列中。

主要问题是邮政编码有时是 5 位数,有时是 9。

两个示例行将是:

Address_FULL
1234 NOWHERE ST WASHINGTON DC 20005
567 EVERYWHERE LN CHARLOTTE NC 22011-1203

我怀疑我需要某种正则表达式\\d{5}符号,或者在我不知道存在的 dplyr 中进行某种花哨的操作。

标签: rregexdplyrstreet-address

解决方案


如果邮政编码总是在最后,你可以使用

str_extract(Address_FULL,"[[:digit:]]{5}(-[[:digit:]]{4})?$")

要添加“zip”列,dplyr您可以使用

df %>% mutate(zip = str_extract(Address_FULL,"[[:digit:]]{5}(-[[:digit:]]{4})?$"))

您的数据框在哪里df包含 Address_FULL 并且 str_extract()来自stringr.

状态可以提取如下:

str_extract(Address_FULL,"(?<=\\s)[[:alpha:]]{2}(?=\\s[[:digit:]]{5})")

但是,这做出了以下假设

  1. 州缩写为 2 个字符长
  2. 州缩写后面紧跟一个空格
  3. 邮政编码紧跟在州后面的空格之后

推荐阅读