如何解决删除 R 中两个特定字母之前的所有前导字符串
我正在寻找一种方法来删除两个特定字母“bd”和“ls”之前的所有前导字符串。
但是,我只找到了在空格或标点符号之前删除字符串的正则表达式方法。有什么方法可以去除特定字母对之前的前导字符串吗?
date_on location
14 2021-02-22 bradford,west yorkshire,bd9 6dp
15 2021-02-22 bradford,bd4
16 2021-02-22 bradford,west yorkshire
17 2021-02-22 west yorkshire,bd1 1nq
18 2021-02-22 bradford,west yorkshire
19 2021-02-22 ls28 7he
输入:
structure(list(date_on = structure(c(18680,18680,18680),class = "Date"),location = c("bradford,bd9 6dp","bradford,bd4",west yorkshire","west yorkshire,bd1 1nq","ls28 7he")),row.names = 14:19,class = "data.frame")
预期结果:
date_on location
14 2021-02-22 bd9 6dp
15 2021-02-22 bd4
16 2021-02-22
17 2021-02-22 bd1 1nq
18 2021-02-22
19 2021-02-22 ls28 7he
structure(list(date_on = structure(c(18680,location = c("bd9 6dp","bd4","","bd1 1nq",class = "data.frame")
解决方法
我们可以在这里尝试使用 /Views
,作为基本的 R 选项:
sub
这里是对使用的正则表达式模式的解释:
df$location <- sub("^.*?(\\b(?:bd|ls)\\d+.*|$)$","\\1",df$location)
df
date_on location
14 2021-02-22 bd9 6dp
15 2021-02-22 bd4
16 2021-02-22
17 2021-02-22 bd1 1nq
18 2021-02-22
19 2021-02-22 ls28 7he
,
另一个带有 sub
的基本 R 选项:
df$location <- sub('.*(?=bd|ls)|.*','',df$location,perl = TRUE)
df
# date_on location
#14 2021-02-22 bd9 6dp
#15 2021-02-22 bd4
#16 2021-02-22
#17 2021-02-22 bd1 1nq
#18 2021-02-22
#19 2021-02-22 ls28 7he
删除字符串中出现 'bd|ls'
之前的所有内容,如果没有出现则删除所有内容。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。