R删除字符,后跟街道地址中的特定字符

问题描述 投票:0回答:1

我想删除某些字符后的所有内容,但以下情况除外:

在第一个字符串中,我想删除'st'之后的所有内容(我的解释是,St代表街道),在第二个字符串中,'St'代表圣徒,因此我希望保留原样的地址。

在第三个字符串中,我要删除'Dr'之后的所有内容(我的解释是Dr代表驱动器),在第4个字符串中,'Dr'代表医生,因此我希望保留该地址。

下面是一个示例输入

str <- c("852 union St End",
         "852 St johns street",
         "30 Sandpiper Dr 35",
         "30 Dr Botero drive")

我的预期输出是

c("852 union St",
  "852 St johns street",
  "30 Sandpiper Dr",
  "30 Dr Botero drive")

下面是示例代码正在使用,但是它将删除St / Dr之后的所有内容

Scrubdata <- mgsub(str, 
                     c(" drive.*", " dr .*", 
                       " street.*", " st .*"), 
                     c(" drive", " dr",
                       " street", " st"), ignore.case = T)

有人知道吗?

谢谢!

r gsub
1个回答
0
投票

这是一种删除'St''Dr'之后的单词的方法,如果该单词后面只有一个单词:

sub('(?<=(St|Dr)) \\w+$', '', str, perl = TRUE)
#[1] "852 union St"  "852 St johns street" "30 Sandpiper Dr" "30 Dr Botero drive"

使用str_remove

stringr::str_remove(str, '(?<=(St|Dr)) \\w+$')
© www.soinside.com 2019 - 2024. All rights reserved.