替换其中有符号的单词
replace the word in which there is a symbol
我有资料
vec <- c("RT_12_ SDB", "ZT_12_", "_12TR", "RE_12_TR")
我想替换所有在“12”上有“_12”的数据
我想得到什么:
vec <- c(12 SDB,12,12,12)
我试过了
vec <- gsub("\b_12_\w+", "12", c("RT_12_", "ZT_12_", "_12TR", "RE_12_TR"))
但是没用
为什么不直接从数据中提取 12?
as.numeric(stringr::str_extract(vec, '12'))
#[1] 12 12 12 12
在基础 R 中,
as.numeric(sub('.*(12).*', '\1', vec))
对于更新的数据我们可以使用-
sub("(?<=12)[A-Z]+", "", gsub('.*(?=12)|_', '', vec, perl = TRUE),perl = TRUE)
#[1] "12 SDB" "12" "12" "12"
内部 gsub
删除 12 之前的所有内容和下划线,而外部 sub
删除 12 之后的字符。
你可以试试这个
gsub('.*(12(_\sSDB)?).*', '\1', vec)
# [1] "12_ SDB" "12" "12" "12"
我们可以使用 trimws
来自 base R
as.numeric( trimws(vec, whitespace = "\D+"))
#[1] 12 12 12 12
我有资料
vec <- c("RT_12_ SDB", "ZT_12_", "_12TR", "RE_12_TR")
我想替换所有在“12”上有“_12”的数据
我想得到什么:
vec <- c(12 SDB,12,12,12)
我试过了
vec <- gsub("\b_12_\w+", "12", c("RT_12_", "ZT_12_", "_12TR", "RE_12_TR"))
但是没用
为什么不直接从数据中提取 12?
as.numeric(stringr::str_extract(vec, '12'))
#[1] 12 12 12 12
在基础 R 中,
as.numeric(sub('.*(12).*', '\1', vec))
对于更新的数据我们可以使用-
sub("(?<=12)[A-Z]+", "", gsub('.*(?=12)|_', '', vec, perl = TRUE),perl = TRUE)
#[1] "12 SDB" "12" "12" "12"
内部 gsub
删除 12 之前的所有内容和下划线,而外部 sub
删除 12 之后的字符。
你可以试试这个
gsub('.*(12(_\sSDB)?).*', '\1', vec)
# [1] "12_ SDB" "12" "12" "12"
我们可以使用 trimws
来自 base R
as.numeric( trimws(vec, whitespace = "\D+"))
#[1] 12 12 12 12