我有一个
xts
对象,其中包含时间分辨率为秒的数据。例如:
times <- seq.POSIXt(from=as.POSIXct("2023-04-01 00:00:00"), to=as.POSIXct("2023-04-04 00:01:00"), by = "sec")
xdata <- runif(n=length(times))
series <- xts(xdata, order.by=times)
我想要的是一个时间序列,它使用了每一个第X个元素。例如,每 10 秒使用一次。我该怎么做?
我们可以使用
endpoints
或 seq
。下面的前两个从 0 开始,接下来的两个从第一个点开始。
ep <- endpoints(series, on = "seconds", k = 10) # 0 10 20 ... 259250 259260 259261
s1 <- series[ep]
ix <- seq(0, nrow(series), 10) # 0 10 20 ... 259250 259260
s2 <- series[ix]
# endpoints always includes last point
identical(s1[-nrow(s1)], s2)
## [1] TRUE
# "2023-04-01 00:00:00 EDT" "2023-04-01 00:00:10 EDT" ... "2023-04-04 00:01:00 EDT"
tt <- seq(start(series), end(series), 10) #
s3 <- series[tt]
ix1 <- seq(1, nrow(series), 10) # 1 11 ... 259241 259251 259261
s4 <- series[ix1]
identical(s3, s4)
## [1] TRUE