2017-06-27 65 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的。