2010-12-11 107 views
4

我使用的预测包和提取日期预测包r

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表格,但我需要将日期格式化为最终用户会理解他们代表周末(设置为星期日)的方式。

我转换使用

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

与“可读”日期时间序列对象我原来的时间序列在我的时间序列的开始是在2009年4月5日,代表每周数据点。

任何帮助你可以提供将非常感激。不用说我对R来说很新颖。

回答

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()。

+0

好的提示!谢谢 :) – eliasah 2017-01-27 09:51:25