r语言 - 如何在字母数字变量中排除数字(带有"/")



我正在努力如何删除带有"/"的数字之后的所有内容,例如,我有以下向量

x <-c("Rua 12 de outubro", "Outubro 1/900", "Rua A 4/2 outracoisa", "Rua a 2")

我想获得

x <-c("Rua 12 de outubro", "Outubro", "Rua A", "Rua a 2")

即,排除带有"/"的数字,并在它们后面加上所有数字。

我试图使用gsub但没有成功。关于我该怎么做的任何 int?

假设字符串中只有一个"/":

x <-c("Rua 12 de outubro", "Outubro 1/900", "Rua A 4/2 outracoisa", "Rua a 2")
sub("(.*) \d+/\d+.*", '\1', x)
#[1] "Rua 12 de outubro" "Outubro"           "Rua A"             "Rua a 2"        

使用sub执行替换并将字符串分成两个捕获组(...):一个在要保留的/字符之前,另一个在要丢弃的字符之后。然后用\1引用第一个捕获组,并将整个字符串替换为该组:

sub("(.+)(/.+)", "\1", x)
[1] "Rua 12 de outubro" "Outubro 1"         "Rua A 4"           "Rua a 2"

或者,您可以通过否定字符类[^/]+定义第一个捕获组,该类允许除/字符之外的任何字符一次或多次:

sub("([^/]+)(/.+)", "\1", x)

最新更新