取xts对象的每一个X值

问题描述 投票:0回答:1

我有一个

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 秒使用一次。我该怎么做?

r xts
1个回答
0
投票

我们可以使用

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
© www.soinside.com 2019 - 2024. All rights reserved.