提取日期预测包R.

时间:2010-12-11 01:01:39

标签: r time-series

我正在使用预测包并保存了

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

到数据框。行名称代表我的日期,打印时看起来像

> 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

我还没有接近完成这项工作,但我希望自动化LaTex报告,在那里我将预测打印到报告页面和预测图。我想我可以将数据帧传递给LaTex表,但我需要格式化日期,最终用户将理解它们代表周末(设置为星期日)。

我使用

将具有“可读”日期的原始时间序列转换为时间序列对象
ts(prod, start = 2009 +(31+28+31+5)/365, f=52 )

我的时间序列的开始时间是2009年4月5日,代表每周的数据点。

非常感谢您提供的任何帮助。不用说,我对R很新。

1 个答案:

答案 0 :(得分:4)

我可以想到两种方法:一种方法是使用Epi包中的函数as.Date.cal.yr。另一种方法是将这些日期乘以一年中的秒数,然后将其传递给as.POSIXct(但我没有测试过那个。)在这两个中,第一个似乎是最不痛苦的:

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"

所以我没有星期天,因为那些在POSIXlt系统中将是wday == 0。请参阅DateTimeClasses的帮助。

至于问题的LaTeX部分,安装Hmisc包并使用函数latex()。