将秒设置为xts对象的0

时间:2015-12-11 12:47:16

标签: r time-series xts zoo

我有一个xts对象列表,每个对象都有不同的编号。几秒钟我应该如何将秒设置为0.这里,我提供了一个xts对象

structure(c(6.00001082143504e-18, 6.00001082143504e-18, 6.00001082143504e-18, 
6.00001082143504e-18, 6.00001082143504e-18, 6.00001082143504e-18
), .indexCLASS = c("POSIXct", "POSIXt"), .indexTZ = "", tclass = c("POSIXct", 
"POSIXt"), tzone = "", class = c("xts", "zoo"), index = structure(c(1438367432, 
1438367492, 1438367552, 1438367612, 1438367672, 1438367732), tzone = "", tclass = c("POSIXct", 
"POSIXt")), .Dim = c(6L, 1L))

换句话说,我有xts对象为

2015-08-01 00:00:32 6.000011e-18
2015-08-01 00:01:32 6.000011e-18
2015-08-01 00:02:32 6.000011e-18

我应该如何将秒设置为0,以便将其导入

2015-08-01 00:00:00 6.000011e-18
2015-08-01 00:01:00 6.000011e-18
2015-08-01 00:02:00 6.000011e-18

2 个答案:

答案 0 :(得分:2)

我们可能会使用sub。我们在字符串结尾(\\d{2})之前匹配两位数字($),并将其替换为' xt2&#39 00的{​​{1}} ;。由于返回对象是index类,我们可以将其重新转换为character类,然后再将其作为原始对象的POSIXct分配。

index

答案 1 :(得分:2)

将时间戳更改为之前通常不是一个好主意,因此您应该仔细考虑这样做。如果您提供有关您尝试解决的实际问题的更多信息,我可以帮助您避免做一些有潜在危险的事情,例如在实际发生之前将数据更改为

align.time将(安全地)将时间戳四舍五入到最近的n秒:

> align.time(x, n=60)
                            [,1]
2015-07-31 13:31:00 6.000011e-18
2015-07-31 13:32:00 6.000011e-18
2015-07-31 13:33:00 6.000011e-18
2015-07-31 13:34:00 6.000011e-18
2015-07-31 13:35:00 6.000011e-18
2015-07-31 13:36:00 6.000011e-18

或者,如果必须,您只需使用trunc删除所有秒数:

> index(x) <- as.POSIXct(trunc(index(x), units="mins"))
> x
                            [,1]
2015-07-31 13:30:00 6.000011e-18
2015-07-31 13:31:00 6.000011e-18
2015-07-31 13:32:00 6.000011e-18
2015-07-31 13:33:00 6.000011e-18
2015-07-31 13:34:00 6.000011e-18
2015-07-31 13:35:00 6.000011e-18