2017-06-27 33 views
0

我有一个xts对象,代表使用15分钟采样在两周时间内测量的变量。子集包含数据和时间的xts对象

的数据的一个例子如下:

> 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年1月20日16点30分○○秒 - > 2017年1月21日16 :30:00为单个变量,这样我就可以计算这个单一变量的日内相关性。

我已经签出Joshua Ulrich's XTS FAQ但它没有提供具有日期和时间组件的数据。

如何将这个XTS对象分为14天的块(96个样本)?

+0

看看Jubas从[这里]的答案(https://stackoverflow.com/questions/19420155/subset-rows-according-to-a-range-of-time) –

回答

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 

来源:约书亚Ulrich的答案here的。