2017-06-27 1 views
0

J'ai un objet xts qui représente une variable mesurée sur une période de deux semaines en utilisant un échantillonnage de 15 minutes.Sous-ensemble xts objet contenant des données et l'heure

Un exemple des données est la suivante:

> 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 

Je souhaite extraire chaque jour, soit 24 heures de données - 20/01/2017 16:30:00 -> 2017-01-21 16 : 30: 00 pour une seule variable afin que je puisse calculer la corrélation intra-jour pour cette seule variable.

J'ai vérifié Joshua Ulrich's XTS FAQ mais il n'adresse pas les données qui ont un composant date et heure.

Comment puis-je sous-estimer cet objet XTS en blocs de 14 jours (96 échantillons)?

+0

Jetez un oeil à la réponse de Jubas de [ici] (https://stackoverflow.com/questions/19420155/subset-rows-according-to-a-range-of-time) –

Répondre

1

Si vous êtes à la recherche d'une corrélation intra-jour avec une autre série, vous pouvez utiliser 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 

Source: dérivé de la réponse here de Joshua Ulrich.