【发布时间】:2021-10-18 17:52:57
【问题描述】:
我有一个字符日期序列(“2018-09-032018-09-09”“2018-09-102018-09-16”......),我会在第 10 个日期之后添加一个空格数字。作为最终结果,我将获得以下“2018-09-03 2018-09-09”“2018-09-10 2018-09-16”...
我想 gsub 功能可以提供帮助,但我不知道如何实现它
你能帮帮我吗?
【问题讨论】:
我有一个字符日期序列(“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 与这个用于 YYYY-MM-DD 格式的 '\\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])' 正则表达式一起使用:
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"
【讨论】: