Je travaille avec des données chronologiques et rencontre un problème avec apply.weekly()
. Il semblerait qu'après une certaine date, les semaines ne se cumulent pas correctement.R apply.weekly() renvoie une période incorrecte lors de la conversion de la série journalière en série hebdomadaire
library(xts)
value <- c(46.40269, 47.27100 ,47.73311, 46.12858, 44.54989 ,42.79287, 41.70017 ,41.22373, 40.16180, 38.48705 ,37.02111 ,35.95312, 37.47187, 42.59649 ,49.22880, 53.96820, 57.97346, 61.22755,61.79824, 65.05720, 65.30233 ,61.86191,58.03687, 55.17815, 52.88933, 51.47876, 50.31402, 48.91674, 47.47042)
DATE <- as.Date(c("2038-01-03", "2038-01-04", "2038-01-05", "2038-01-06", "2038-01-07" ,"2038-01-08", "2038-01-09", "2038-01-10", "2038-01-11", "2038-01-12", "2038-01-13" ,"2038-01-14", "2038-01-15" ,"2038-01-16" ,"2038-01-17", "2038-01-18", "2038-01-19", "2038-01-20", "2038-01-21", "2038-01-22", "2038-01-23", "2038-01-24" ,"2038-01-25", "2038-01-26", "2038-01-27", "2038-01-28", "2038-01-29", "2038-01-30", "2038-01-31"))
DF <- data.frame(DATE, value)
DF_daily <- xts(DF$value, order.by = DF$DATE)
DF_weekly <- apply.weekly(DF_daily, FUN=sum)
print(DF_weekly)
Cela génère la sortie suivante:
[,1]
2038-01-03 46.40269
2038-01-10 311.39935
2038-01-16 231.69144
2038-01-31 840.70198
Remarquez que la dernière période est de 15 jours de long. Maintenant, si j'utilise plutôt des dates de 2010, j'obtiens exactement ce que vous attendez. Autrement dit, en utilisant dans le code ci-dessus
DATE <- as.Date(c("2010-01-03", "2010-01-04", "2010-01-05", "2010-01-06", "2010-01-07" ,"2010-01-08" ,"2010-01-09" ,"2010-01-10", "2010-01-11", "2010-01-12" ,"2010-01-13" ,"2010-01-14" ,"2010-01-15" ,"2010-01-16", "2010-01-17", "2010-01-18", "2010-01-19" ,"2010-01-20" ,"2010-01-21" ,"2010-01-22", "2010-01-23", "2010-01-24", "2010-01-25" ,"2010-01-26","2010-01-27" ,"2010-01-28" ,"2010-01-29" ,"2010-01-30", "2010-01-31"))
génère la sortie:
[,1]
2010-01-03 46.40269
2010-01-10 311.39935
2010-01-17 280.92024
2010-01-24 427.18889
2010-01-31 364.28429
Y at-il quelque chose de bizarre au sujet de l'année 2038, je ne sais pas?
Je courais ce code sur 64 bits de Windows 7 Enterprise, sessionInfo()
retourne la sortie suivante
R version 3.2.3 (2015-12-10)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 7 x64 (build 7601) Service Pack 1
locale:
[1] LC_COLLATE=English_United States.1252 LC_CTYPE=English_United States.1252 LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C LC_TIME=English_United States.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] xts_0.9-7 zoo_1.7-12
loaded via a namespace (and not attached):
[1] tools_3.2.3 grid_3.2.3 lattice_0.20-33
https://xkcd.com/607/ –
Il existe une variante un peu plus obscure des problèmes de l'an 2000, appelée [Problème Année 2038] (https://en.wikipedia.org/wiki/Year_2038_problem), où l'Epoque Unix débordera un nombre de 32 bits le 19 janvier 2038. –
convertit-il les dates en horodatages POSIXlt encore le problème? –