r - 将街道地址变成组件
问题描述
我有从 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 中进行某种花哨的操作。
解决方案
如果邮政编码总是在最后,你可以使用
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})")
但是,这做出了以下假设:
- 州缩写为 2 个字符长
- 州缩写后面紧跟一个空格
- 邮政编码紧跟在州后面的空格之后
推荐阅读
- c++ - Write a function to display the largest of three numbers. Anyone know where is wrong with my program?
- tree - Prolog Printing a Tree
- python - Python run thread of class method one by one
- amazon-web-services - 在 AWS EC2 上运行 docker 映像时出现分段错误
- django - Django - 如果单个应用程序中有超过 100 个模型怎么办
- azure - Azure 逻辑应用中服务总线连接器的消息处理策略
- mongodb - Mongodb:连接被拒绝
- ios - 适用于所有 iPhone 设备的图像调整器
- javascript - JavaScript为数组中不存在的键添加零
- python - 我在使用 Telepot 运行 Telegram Bot 时遇到问题