从字符串

时间:2015-07-09 15:05:53

标签: r rstudio

所以我有一个由

组成的向量
data<-c("Mark And (BD Marketing Da 1 Z _ 9793)",
"Andre All (BD Marketing DA 1 Z _ 9794 (plus))", 
"Alli Inn (BD Sport Educ 1 C _ 9722 (plus))",
"Alli Inn (BP Sport Educ 1 Z _ 9347)")

现在我需要删除所有字符 _ 以及括号,其中缺少单词(加号),因此结果应为

Mark And BD Marketing Da 1 Z
Andre All BD Marketing DA 1 Z (plus)
Alli Inn BD Sport Educ 1 C (plus)
Alli Inn BP Sport Educ 1 Z
我用过 gsub("\\s*\\w*$", "", data)并获得了

Alli Inn (BP Sport Educ 1 Z

但这不正确,因为我需要删除其他括号,并保留(加)写入的位置。

我试过这个: gsub('\((?!plus)|(?<!plus)\)|.\\d+', '', rownames(data), perl=TRUE)得到了这个 Alli Inn BP Sport Educ Z但现在我在字母

之前缺少数字1

2 个答案:

答案 0 :(得分:1)

gsub('\\((?!plus)|(?<!plus)\\)|_ [0-9]*', '', data, perl=TRUE)
#[1] "Mark And BD Marketing Da 1 Z "        
#[2] "Andre All BD Marketing DA 1 Z  (plus)"
#[3] "Alli Inn BD Sport Educ 1 C  (plus)"   
#[4] "Alli Inn BP Sport Educ 1 Z " 

答案 1 :(得分:1)

使用dplyr和stringr这可能会很快而且很脏,但是它可以完成任务:

library(dplyr)
library(stringr)
data %>% 
  str_replace_all(" _ [1-9][0-9]{0,3}|\\(|\\)", "") %>% 
  str_replace_all("plus", "(plus)")