从字符串中删除某些元素
Remove certain elements form string
所以我有包含
的矢量
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)")
现在我需要删除 _ 之前的所有字符以及缺少单词 (plus) 的 parenthesis 所以结果应该是
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
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 "
使用 dplyr 和 stringr 这可能是快速而肮脏的,但它完成了工作:
library(dplyr)
library(stringr)
data %>%
str_replace_all(" _ [1-9][0-9]{0,3}|\(|\)", "") %>%
str_replace_all("plus", "(plus)")
所以我有包含
的矢量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)")
现在我需要删除 _ 之前的所有字符以及缺少单词 (plus) 的 parenthesis 所以结果应该是
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
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 "
使用 dplyr 和 stringr 这可能是快速而肮脏的,但它完成了工作:
library(dplyr)
library(stringr)
data %>%
str_replace_all(" _ [1-9][0-9]{0,3}|\(|\)", "") %>%
str_replace_all("plus", "(plus)")