R:通过数据框的多列运行预测function

我用csv文件读入一个dataframe,使用:

dataxlsx <- read.csv(file.choose(), header = T) 

数据框如下所示:

 Year Month Period X410 X430 X431 2005 1 1 3467748 4434879 1345638 2005 2 2 3626338 4311150 1167523 . . . . . . 2015 7 127 2374105 1514540 1399804 

我试图运行我创build的名为HWplot的函数来预测input的数据并运行预测,并输出预测图。

我用包ggplot2,tseries,预测。

 HWplot <- function(dataxlsx, n.ahead=12, CI=.95, error.ribbon='green', line.size=1) { hw_object<-HoltWinters(dataxlsx) forecast<-predict(hw_object, n.ahead=24, prediction.interval=T, level=0.95) for_values<-data.frame(time=round(time(forecast), 3), value_forecast=as.data.frame(forecast)$fit, dev=as.data.frame(forecast)$upr-as.data.frame(forecast)$fit) fitted_values<-data.frame(time=round(time(hw_object$fitted), 3), value_fitted=as.data.frame(hw_object$fitted)$xhat) actual_values<-data.frame(time=round(time(hw_object$x), 3), Actual=c(hw_object$x)) graphset<-merge(actual_values, fitted_values, by='time', all=TRUE) graphset<-merge(graphset, for_values, all=TRUE, by='time') graphset[is.na(graphset$dev), ]$dev<-0 graphset$Fitted<-c(rep(NA, NROW(graphset)-(NROW(for_values) + NROW(fitted_values))), fitted_values$value_fitted, for_values$value_forecast) graphset.melt<-melt(graphset[, c('time', 'Actual', 'Fitted')], id='time') p<-ggplot(graphset.melt, aes(x=time, y=value)) + geom_ribbon(data=graphset, aes(x=time, y=Fitted, ymin=Fitted-dev, ymax=Fitted + dev), alpha=.2, fill=error.ribbon) + geom_line(aes(colour=variable), size=line.size) + geom_vline(x=max(actual_values$time), lty=2) + xlab('Time') + ylab('Value') + theme(legend.position='bottom') + scale_colour_hue('') return(p) } 

我面临的问题是我不能分割这个dataframe,以便将HWplot函数应用到数据的单独列(预测X410,X430,X431等)。 我将使用在列中具有不同数量的X ###代码的数据框架,所以我将需要R脚本也包含dynamic数量的列。

结束游戏是从数据框的不同列中运行这些预测,并将预测和graphics输出到excel工作簿,并将列的名称作为每个工作表名称。

注意:HWplot函数在只有一列度量的数据框的情况下工作,但不适用于多列度量。

我已经尝试过的所有function家族的function都不起作用,也没有拆分function。

希望这是有道理的 – 如果有人需要澄清,请让我知道。

在R-bloggers中的“批量预测R”博客文章做了很好的解释如何做到这一点。

http://www.r-bloggers.com/batch-forecasting-in-r-2/