我有一个字符串向量。向量中的大多数元素由一个或多个字母后跟一个或多个数字组成。我希望在每个字符串中仅用“ Sep”替换“ September”(及其缩写)单词,但保留数字。这是我使用Stringr包尝试过的
my.data <- c("01Sept2019", "05sep2019", "4September2019", "8sep2019",
"12oct2019", "4Jun2018", "17Mar2017", "09May2015", "13Sep19")
library(stringr)
my.data %>% str_replace_all("(?i)Sept?(ember)?[0-9]", "Sep")
#> [[1]]
#> [1] "01Sep019", "05Sep019", "4Sep019", "8Sep019", "13Sep9"
这是我想要获得的:
#> [1] "01Sep2019", "05Sep2019", "4Sep2019", "8Sep2019", "13Sep19"
有人可以帮我吗。谢谢
在base中,您可以使用sub
模式[Ss]ep[[:alpha:]]*
查找9月及其缩写,并将其替换为Sep
。
sub("[Ss]ep[[:alpha:]]*", "Sep", my.data)
#[1] "01Sep2019" "05Sep2019" "4Sep2019" "8Sep2019" "12oct2019" "4Jun2018"
#[7] "17Mar2017" "09May2015" "13Sep19"
要只匹配9月后跟数字的数字,可以使用:
sub("sep(t|(?=\\d))(e|(?=\\d))(m|(?=\\d))(b|(?=\\d))(e|(?=\\d))(r|(?=\\d))"
, "Sep", my.data, ignore.case=TRUE, perl=TRUE)
#[1] "01Sep2019" "05Sep2019" "4Sep2019" "8Sep2019" "12oct2019" "4Jun2018"
#[7] "17Mar2017" "09May2015" "13Sep19"
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句