如果该时间步的时间是00:00,如何更改last
的返回值的格式?
这里有一个例子
我有两个xts
对象,其中包含要对齐的具有不同结束时间的每小时观测。
library(xts)
x <- c(1:10)
dt <- seq.POSIXt(from = as.POSIXct("2023-06-14 15:00", tz = "GMT"), by = "hour", length.out = 10)
x <- xts(x, order.by=dt)
y <- c(1:12)
dt <- seq.POSIXt(from = as.POSIXct("2023-06-14 15:00", tz = "GMT"), by = "hour", length.out = 12)
y <- xts(y, order.by=dt)
如果我打印x
,我得到
x
[,1]
2023-06-14 15:00:00 1
2023-06-14 16:00:00 2
2023-06-14 17:00:00 3
2023-06-14 18:00:00 4
2023-06-14 19:00:00 5
2023-06-14 20:00:00 6
2023-06-14 21:00:00 7
2023-06-14 22:00:00 8
2023-06-14 23:00:00 9
2023-06-15 00:00:00 10
当打印y
时,得到
y
[,1]
2023-06-14 15:00:00 1
2023-06-14 16:00:00 2
2023-06-14 17:00:00 3
2023-06-14 18:00:00 4
2023-06-14 19:00:00 5
2023-06-14 20:00:00 6
2023-06-14 21:00:00 7
2023-06-14 22:00:00 8
2023-06-14 23:00:00 9
2023-06-15 00:00:00 10
2023-06-15 01:00:00 11
2023-06-15 02:00:00 12
目前为止一切顺利。然而,如果使用last
来确定时间序列的结束,我会得到一个没有时间的日期格式,而当确定y
的最后一个条目时,情况并非如此:
last(index(x))
[1] "2023-06-15 GMT"
last(index(y))
[1] "2023-06-15 02:00:00 GMT"
如果我现在执行以下操作,y
不会被x
的扩展子集化,可能是因为时间格式:
y[paste(first(index(x)), last(index(x)), sep="/")]
[,1]
2023-06-14 15:00:00 1
2023-06-14 16:00:00 2
2023-06-14 17:00:00 3
2023-06-14 18:00:00 4
2023-06-14 19:00:00 5
2023-06-14 20:00:00 6
2023-06-14 21:00:00 7
2023-06-14 22:00:00 8
2023-06-14 23:00:00 9
2023-06-15 00:00:00 10
2023-06-15 01:00:00 11
2023-06-15 02:00:00 12
2条答案
按热度按时间dtcbnfnu1#
我建议你使用
window
函数:跳过一圈一圈地创建需要在之后解析的字符串,这真的很难看,而且不像R。
zc0qhyus2#
你可以改变
format
并添加时区,如下所示:创建于2023-06-14带有reprex v2.0.2
注意:输出为字符!