从字符串中删除某些模式

时间:2013-06-19 07:42:33

标签: r vector gsub strsplit

我有一个类似下面的矢量:

t <- c("8466 W Peoria Ave", "4250 W Anthem Way", .....)

我想将其转换为:

t_mod <-c("Peoria Ave", "Anthem Way".....)

那就是我想从我的字符串向量中删除数字和单个字符。

真的很感激任何帮助。

4 个答案:

答案 0 :(得分:4)

tt <- c("8466 W Peoria Ave", "4250 W Anthem Way")
gsub(" [A-Za-z] ", "", gsub("[0-9]", "", tt))
[1] "Peoria Ave" "Anthem Way"

答案 1 :(得分:1)

你走了:

# Data
t <- c("8466 W Peoria Ave", "4250 W Anthem Way")

# Remove numbers and split by whitespace
t.char <- sub("[[:alnum:]]* ", "", t) 
t.char.split <- strsplit(t.char, " ")

# Remove strings with only one character
t.mod <- sapply(t.char.split, function(i) {
  paste(i[which(nchar(i) > 1)], collapse = " ")
})

t.mod
[1] "Peoria Ave" "Anthem Way"

答案 2 :(得分:1)

我对正则表达式不是很好,但我可以采取刺,这是怎么回事:

t_mod <- gsub("^[0-9]{1,} [a-z][A-Z] ", "", t)

这将首先在字符串的开头删除任意数量的数字,然后是空格,任何字母,然后是另一个空格。然后我的t_mod看起来像你需要的那样:

t_mod
[1] "Peoria Ave" "Anthem Way"

答案 3 :(得分:0)

char <- c("8466 W Peoria Ave", "4250 W Anthem Way")
gsub("[[:digit:]]+ *[[:alpha:]].","",char)
#[1] "Peoria Ave" "Anthem Way"