子集包含数据和时间的xts对象

时间:2017-06-27 22:39:14

标签: r time-series subset xts

我有一个xts对象,它表示使用15分钟采样在两周时间段内测量的变量。

数据的一个例子如下:

> class(wideRawXTS)
[1] "xts" "zoo"

> head(wideRawXTS[,2],10)
                    DO0182U09B3
2017-01-20 16:30:00     -103.37
2017-01-20 16:45:00     -102.75
2017-01-20 17:00:00     -103.30
2017-01-20 17:15:00      -95.92
2017-01-20 17:30:00     -103.04
2017-01-20 17:45:00     -103.67
2017-01-20 18:00:00     -103.26
2017-01-20 18:15:00     -103.86
2017-01-20 18:30:00     -103.96
2017-01-20 18:45:00     -103.33

> str(wideRawXTS)
An ‘xts’ object on 2017-01-20 16:30:00/2017-02-03 16:00:00 containing:
  Data: num [1:1343, 1:12] -102 -101 -101 -101 -101 ...
 - attr(*, "dimnames")=List of 2
  ..$ : NULL
  ..$ : chr [1:12] "DO0182U09A3" "DO0182U09B3" "DO0182U09C3" "DO0182U21A1" ...
  Indexed by objects of class: [POSIXlt,POSIXt] TZ: 
  xts Attributes:  
 NULL

我想提取每一天,即24小时的数据 - 2017-01-20 16:30:00 - > 2017-01-21 16:30:00为单个变量,这样我就可以计算出这个单变量的日内相关性。

我已检出Joshua Ulrich's XTS FAQ但它没有解决具有日期和时间组件的数据。

如何将此XTS对象子集为14天块(96个样本)?

1 个答案:

答案 0 :(得分:1)

如果您正在寻找与其他系列的日内关联,则可以使用xts::apply.daily

library(xts)

times <- seq(
  from = as.POSIXct("2000-01-01 00:00:00"),
  to = as.POSIXct("2000-01-10 00:00:00"),
  by = 15 * 60
)

values1 <- runif(length(times))
values2 <- runif(length(times))

series <- xts(x = cbind(values1, values2), order.by = times)

apply.daily(series, FUN = function(x) cor(x = x[, 1],
                                          y = x[, 2]))
#>                             [,1]
#> 2000-01-01 23:45:00 -0.067156934
#> 2000-01-02 23:45:00 -0.005426825
#> 2000-01-03 23:45:00  0.011104314
#> 2000-01-04 23:45:00 -0.085361525
#> 2000-01-05 23:45:00 -0.047193367
#> 2000-01-06 23:45:00  0.149419147
#> 2000-01-07 23:45:00  0.068223067
#> 2000-01-08 23:45:00  0.002006084
#> 2000-01-09 23:45:00  0.023573252
#> 2000-01-10 00:00:00           NA

资料来源:来自Joshua Ulrich的回答here