2010-12-11 4 views
4

J'utilise le paquet de prévisions et les résultats sauvegardés deExtrait Date de package de prévision R

t <- data.frame(forecast(prod.arima, h=4)) 

à une trame de données. Les noms de ligne représentent mes dates, qui, lorsqu'il regard imprimées comme

> t 
     Point.Forecast Lo.80 Hi.80 Lo.95  Hi.95 
2010.856  812.9849 630.5707 995.3992 534.0064 1091.9634 
2010.876  670.3363 485.1885 855.4840 387.1772 953.4953 
2010.895  769.4848 584.2552 954.7145 486.2005 1052.7691 
2010.914  692.8951 507.6630 878.1272 409.6070 976.1832 

Je ne suis pas près (encore) pour obtenir ce terminé, mais j'espère automatiser un rapport LaTex où je vais imprimer les prévisions à une page de rapport et un tracé de la prévision. Je suppose que je peux passer le dataframe à une table LaTex, mais j'ai besoin que les dates soient formatées d'une manière où l'utilisateur final comprendra qu'elles représentent les fins de semaine (définies au dimanche).

Je converti ma série chronologique originale avec des dates « lisibles » à un objet de séries temporelles en utilisant

ts(prod, start = 2009 +(31+28+31+5)/365, f=52) 

où le début de mes timeseries était le 5 Avril 2009 et représenté par semaine datapoints.

Toute aide que vous pouvez fournir sera très appréciée. Inutile de dire que je suis assez nouveau à R.

Répondre

4

Je peux penser à deux façons: l'une serait d'utiliser une fonction as.Date.cal.yr du paquet Epi. Un autre serait de multiplier ces dates par le nombre de secondes dans une année, puis passer à as.POSIXct (mais je n'ai pas testé celui-là.) De ces deux, le premier semble le moins douloureux:

require(Epi) 
as.Date.cal.yr(as.numeric(row.names(t))) 
# [1] "2010-11-10" "2010-11-17" "2010-11-24" "2010-12-01" 
as.POSIXlt(as.Date.cal.yr(as.numeric(row.names(t))))$wday 
# [1] 3 3 3 3 
paste(weekdays(as.Date.cal.yr(as.numeric(row.names(t)))) , 
     as.Date.cal.yr(as.numeric(row.names(t))), sep=",") 
# [1] "Wednesday,2010-11-10" "Wednesday,2010-11-17" "Wednesday,2010-11-24" 
# [4] "Wednesday,2010-12-01" 

Donc, je ne reçois pas les dimanches, car ceux-ci seraient wday == 0 dans le système POSIXlt. Voir l'aide pour DateTimeClasses. Pour la partie LaTeX de la question, installez le package Hmisc et utilisez la fonction latex().

+0

Bon conseil! Merci :) – eliasah