R 删除特定字符后跟街道地址中的数字
R Remove specific character followed by number in Street Address
我想删除第一个字符串中的字符 'A&B' 和第二个字符串中的字符 'B',后跟来自以下包含大量字符串的向量中的数字。
但是,我会保留某些字符,例如 N、S、E、W、NE、NW、SE、SW、North、South、East、West(方向)。
下面是一个例子:
str <- c("852 A&B Sandpiper Drive",
"313 B North Dogwood Avenue",
"852 N Sandpiper Drive",
"3212 NE Highway 22",
"852 A B Sandpiper Drive")
预期输出如下:
str <- c("852 Sandpiper Drive",
"313 North Dogwood Avenue",
"852 N Sandpiper Drive",
"3212 NE Highway 22",
"852 Sandpiper Drive")
我真的想不出一个好的解决方案。我知道我必须使用 sub 或 gsub 但我只能删除数字后的个位数字母。
有人有想法吗?
谢谢!
您可以将 gsub
与单词边界一起使用:
gsub('\b(A&B|A|B)\s+', '', str)
#[1] "852 Sandpiper Drive" "313 North Dogwood Avenue" "852 N Sandpiper Drive"
#[4] "3212 NE Highway 22" "852 Sandpiper Drive"
如果你想删除而不留下一个以上的空白字符:
sub("\b(A&B|A B|B)\b\s", "", str)
[1] "852 Sandpiper Drive" "313 North Dogwood Avenue" "852 N Sandpiper Drive" "3212 NE Highway 22"
[5] "852 Sandpiper Drive"
sub
很好,因为每个字符串只有一个匹配项(否则需要 gsub
); &
不是元字符,因此不需要转义
另一种解决方案是定义捕获组并在反向引用中调用它们:
sub("(^\d+)([AB& ]*)([A-Z][a-z].*$)", "\1 \3", str)
我想删除第一个字符串中的字符 'A&B' 和第二个字符串中的字符 'B',后跟来自以下包含大量字符串的向量中的数字。
但是,我会保留某些字符,例如 N、S、E、W、NE、NW、SE、SW、North、South、East、West(方向)。
下面是一个例子:
str <- c("852 A&B Sandpiper Drive",
"313 B North Dogwood Avenue",
"852 N Sandpiper Drive",
"3212 NE Highway 22",
"852 A B Sandpiper Drive")
预期输出如下:
str <- c("852 Sandpiper Drive",
"313 North Dogwood Avenue",
"852 N Sandpiper Drive",
"3212 NE Highway 22",
"852 Sandpiper Drive")
我真的想不出一个好的解决方案。我知道我必须使用 sub 或 gsub 但我只能删除数字后的个位数字母。
有人有想法吗?
谢谢!
您可以将 gsub
与单词边界一起使用:
gsub('\b(A&B|A|B)\s+', '', str)
#[1] "852 Sandpiper Drive" "313 North Dogwood Avenue" "852 N Sandpiper Drive"
#[4] "3212 NE Highway 22" "852 Sandpiper Drive"
如果你想删除而不留下一个以上的空白字符:
sub("\b(A&B|A B|B)\b\s", "", str)
[1] "852 Sandpiper Drive" "313 North Dogwood Avenue" "852 N Sandpiper Drive" "3212 NE Highway 22"
[5] "852 Sandpiper Drive"
sub
很好,因为每个字符串只有一个匹配项(否则需要 gsub
); &
不是元字符,因此不需要转义
另一种解决方案是定义捕获组并在反向引用中调用它们:
sub("(^\d+)([AB& ]*)([A-Z][a-z].*$)", "\1 \3", str)