r - 从地址字符串中提取城市名称
问题描述
有没有办法从有时不一致的地址字符串中提取城市名称。大多数情况下,cityname 是字符串的最后一个单词,但并非总是如此。例如:
Streetname 8, 1234 AA, Amsterdam
Streetname 10, 1234 BB, Rotterdam ZH
因此,我只想检查地址字符串是否包含约 10 个可能的城市名称之一。如果是这样,则必须在新列中打印该特定城市名称。谁能帮助我在 R 的 Excel 中实现这一目标?
提前致谢!
解决方案
在R
:
df = data.frame(Adres = c('Streetname 8, 1234 AA, Amsterdam','Streetname 10, 1234 BB, Rotterdam ZH'))
df$Stad <- stringr::str_extract(df$Adres, "(?<=, )[A-Za-z]+")
print(df)
印刷:
Adres Stad
1 Streetname 8, 1234 AA, Amsterdam Amsterdam
2 Streetname 10, 1234 BB, Rotterdam ZH Rotterdam
在线演示
这将在您的城市名称是一个单词的情况下起作用。您是否有像“Den Bosch”或“s-Hertogenbosch”这样的城市,您可以使用另一种模式:
(?<=, )\D+?(?=( [A-Z]*)?$)
例如,这可能导致:
Adres Stad
1 Streetname 8, 1234 AA, Amsterdam Amsterdam
2 Streetname 10, 1234 BB, Rotterdam ZH Rotterdam
3 Streetname 10, 1234 BB, 's-Hertogenbosch BRA 's-Hertogenbosch
4 Streetname 10, 1234 BB, Den Bosch BRA Den Bosch
如果您想排除某些城市,您可以构建一个包含城市作为 OR 语句的模式,例如:
(?<=, )(Rotterdam|Amsterdam|Den Bosch|'s-Hertogenbosch)(?=.*$)
这可能导致:
Adres Stad
1 Streetname 8, 1234 AA, Amsterdam Amsterdam
2 Streetname 10, 1234 BB, Rotterdam ZH Rotterdam
3 Streetname 19, 1234 CC, Almere FL <NA>
4 Streetname 10, 1234 BB, 's-Hertogenbosch BRA 's-Hertogenbosch
5 Streetname 10, 1234 BB, Den Bosch BRA Den Bosch
推荐阅读
- python - 每次在 for 循环中创建一个新变量
- powerbi - 如果数字有“.00”,如何添加逗号千位分隔符显示错误
- c - 带有 char[] 的 C 指针,忽略 const 关键字?
- php - 目标类 [StudentController] 不存在。http://localhost:8000/学生
- javascript - 如何从 Firestore 中的字段获取数组的值(在 Javascript 中)
- python - 返回其索引在另一个数组中指定的元素数组
- javascript - 如何使用 Node.js 和 HTML 加载静态图像?
- android - Firebase 云消息导致 ANR
- php - Add a tax class column to WooCommerce admin products list
- html - 如何使用 HTML/CSS 将图像放在表单旁边?