0

这与我之前的问题相关联,正则表达式在 dates 中添加 hypen

我现在希望能够再次使用 gsub 删除秒和毫秒/将其更改为零

即类似的东西:

x <- c("20130603 00:00:03.102","20130703 00:01:03.103","20130804 00:03:03.104")


y <- gsub([REGEX PATTERN TO MATCH],[REPLACEMENT PATTERN TO INSERT HYPHEN and REMOVE SECONDS] ,x)

> y
[1] "2013-06-03 00:00:00" "2013-07-03 00:01:00" "2013-08-04 00:03:00"
4

3 回答 3

3

您可以使用strptime将对象解析为POSIXlt打印时完全符合您期望格式的对象:

y <- strptime(x, "%Y%m%d %H:%M:%S")
# [1] "2013-06-03 00:00:03" "2013-07-03 00:01:03" "2013-08-04 00:03:03"

要删除秒,请使用trunc

y <- trunc(y, units = "mins")
# [1] "2013-06-03 00:00:00" "2013-07-03 00:01:00" "2013-08-04 00:03:00"

将您的对象作为日期/时间对象将打开很多门,但如果您真的打算将输出存储为字符向量,那么只需使用as.character

y <- as.character(y)
于 2013-08-28T09:38:03.313 回答
2

一个lubridate版本:

library(lubridate)
dt <- ymd_hms(x)
dt2 <- update(dt, seconds = 0)
于 2013-08-28T09:51:20.997 回答
1

你可以试试这个正则表达式,我加了一点:

gsub("(\\d{4})(\\d{2})(\\d{2}) (\\d{2}:\\d{2}).*", "\\1-\\2-\\3 \\4:00", subject, perl=TRUE);

正则表达式 101 上的演示

于 2013-08-28T09:22:41.113 回答