r - 仅搜索和替换 R 中的特定行
问题描述
我想在我的数据库中搜索和替换一些字符,但不是在所有行中。
这是我的数据库:
1. 41 R JEAN JAURES 93170
2. 42 AV DE STALINGRAD 93170
3. 51 57 R JULES FERRY 93170
4. 1 R DU HAVRE 93170
我想替换为:
5. 41 RUE JEAN JAURES 93170
6. 42 AVENUE DE STALINGRAD 93170
7. 51 57 RUE JULES FERRY 93170
8. 1 RUE DU HAVRE 93170
所以,我尝试了这个sub()
函数,但2.
它会替换第一个函数,R
所以它将是 STALING RUE AD 而不是 STALING R AD。
我也尝试了substr()
but like in 3. 在要替换的字母之前可能有一些很长的字符。因为我有大约 600k 地址,所以会有很多这样的例外。
有没有办法在这些功能中添加一些限制来实现我的目标?
解决方案
您可以使用\\s+
匹配 1 个或多个空格以及\\s*
匹配 0 个或多个空格。
vec <- c("41 R JEAN JAURES 93170",
"42 AV DE STALINGRAD 93170",
"51 57 R JULES FERRY 93170",
"1 R DU HAVRE 93170")
library(magrittr)
vec %>%
gsub("\\s*R\\s+", " RUE ", .) %>%
gsub("\\s*AV\\s+", " AVENUE ", .)
[1] "41 RUE JEAN JAURES 93170" "42 AVENUE DE STALINGRAD 93170"
[3] "51 57 RUE JULES FERRY 93170" "1 RUE DU HAVRE 93170"
此外,您可能会考虑\\b
单词边界(包括空格):
vec %>%
gsub("\\bR\\s+", "RUE ", .) %>%
gsub("\\bAV\\s+", "AVENUE ", .)
推荐阅读
- r - 在特定文件夹中运行文件时出错,而同一文件在其他文件夹中运行顺利
- javascript - 将 Javascript 中的变量更改为最终用户选择
- docker - 如何在 linux 系统上的 docker 中运行可移植的可执行文件
- bash - 将一组具有内部依赖关系的 shell 脚本合并为一个?
- json - 在flutter中从API解析json数据的问题
- abap - 访问 RFC 调用系统的堆栈内存
- java - Kotlin Lint 测试失败,即使它在生产中有效
- reactjs - 如何设置 customvalidity 以在其中包含链接?
- java - java.lang.IllegalArgumentException:要发送的键应为非空 CharSequence
- java - Springboot 角色身份验证不起作用。我无法访问特定路径,