我有一个字符日期序列("2018-09-032018-09-09"2018 - 09 - 102018 - 09 - 16".....),我会在第10位数字后添加一个空白。作为最终结果,我将获得以下"2018-09-03 2018-09-09";"2018-09-10 2018 - 09 - 16"…我猜gsub函数可以帮助,但我不知道如何实现它
你能帮我吗?
我们可以使用str_extract_all
与'\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])'
的正则表达式,这是YYYY-MM-DD格式:
library(stringr)
unlist(str_extract_all(dates, '\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])'))
输出:
"2018-09-03" "2018-09-09" "2018-09-10" "2018-09-16"
我们可以使用sub
捕获前10位数字,然后添加空格
sub("^(.{10})(.*)", "\1 \2", dates)
与产出
[1] "2018-09-03 2018-09-09" "2018-09-10 2018-09-16"
注意:我们使用了sub
,这只是必要的,因为我指定了开始(^
)字符。
dates <- c("2018-09-032018-09-09", "2018-09-102018-09-16")
可以吗?
gsub('(.{10})(.*)','\1 \2' ,c("2018-09-032018-09-09", "2018-09-102018-09-16"))
[1] "2018-09-03 2018-09-09" "2018-09-10 2018-09-16"