2017-08-06 5 views
1

J'ai les données suivantes dans la variable t, générés par t <- xts(1:6, order.by=seq(as.POSIXct("2000-01-01 00:01:00", tz="GMT"), length.out = 6, by="1 min"))Pourquoi les points de terminaison de xts() ignorent-ils les données sur la limite droite de l'intervalle?

    [,1] 
2000-01-01 00:01:00 1 
2000-01-01 00:02:00 2 
2000-01-01 00:03:00 3 
2000-01-01 00:04:00 4 
2000-01-01 00:05:00 5 
2000-01-01 00:06:00 6 

j'attendre que endpoints(t, on="mins", k=3) me donne c(0, 3, 6) qui correspondes à 2000-01-01 00:03:00, 2000-01-01 00:06:00.

Au lieu de cela, il retourne c(0,2,5,6). Quelle est la logique derrière ce comportement?

Alors quelle est la raison d'avoir le zéro? Il est écrit dans la documentation que c'est là mais pourquoi?

Répondre

1

La prémisse de votre question est incorrecte. endpoints() n'ignore pas les données sur la limite droite de l'intervalle. Vos données d'exemple incluent uniquement des valeurs sur la gauche; c'est-à-dire que toutes les observations de vos données se produisent au début de chaque minute. Si elles étaient effectivement la limite de droite, cela signifierait que "2000-01-01 00: 00: 00.000" est la dernière valeur observée en 1999.

Le premier élément doit être zéro uniquement en raison de la façon dont la sortie de endpoints() est utilisé dans d'autres fonctions. Hypothétiquement, le code pourrait probablement être refactorisé pour supprimer l'exigence que le premier élément soit zéro. Je dis hypothétiquement, parce que ce refactor pourrait potentiellement casser d'autres codes, ce qui me rend réticent à le faire.