将预测结果合并到R中的数据框中,然后导出到excel中

我目前正在R中运行多个auto.arima()预测,以生成一系列置信区间的点预测,我希望能够直接进入excel。 我的数据的一部分显示了我目前使用的脚本示例。

 require(forecast) # Customer GM ARIMA Forecasts (1 Quarter Ahead) F1 <- read.csv("C:/datapath/Desktop/dataname.csv") F1 <- ts(F1, frequency = 12, start = c(2014, 1), end = c(2015, 12)) Coonan <- F1[,3] Gallo <- F1[,4] Kempton<- F1[,5] Moore <- F1[,6] Nekic <- F1[,7] fit.Coonan <- auto.arima(Coonan, stepwise = FALSE) fc.Coonan <- forecast(fit.Coonan, h=3, level = c(20, 40, 80)) fit.Gallo <- auto.arima(Gallo, stepwise = FALSE) fc.Gallo <- forecast(fit.Gallo, h=3, level = c(20, 40, 80)) fit.Kempton <- auto.arima(Kempton, stepwise = FALSE) fc.Kempton <- forecast(fit.Kempton, h=3, level = c(20, 40, 80)) fit.Kempton <- auto.arima(Kempton, stepwise = FALSE) fc.Kempton <- forecast(fit.Kempton, h=3, level = c(20, 40, 80)) fit.Moore <- auto.arima(Moore, stepwise = FALSE) fc.Moore <- forecast(fit.Moore, h=3, level = c(20, 40, 80)) fit.Nekic <- auto.arima(Nekic, stepwise = FALSE) fc.Nekic <- forecast(fit.Nekic, h=3, level = c(20, 40, 80)) # Save to clipboard to copy and paste into excel write.excel <- function(x,row.names=TRUE,col.names=TRUE,...) { write.table(x,"clipboard",sep="\t",row.names=row.names,col.names=col.names,...) } write.excel(fc.Coonan) # Then can paste Coonan Forecasts Directly into excel 

在将我的结果粘贴到excel后,我得到一个如下所示的表格(我想转换列名称,但这不是一个大问题)。 在这里输入图像说明

正如目前所写,我需要手动更改底部函数中的模型名称,运行该函数(为了将结果保存到剪贴板),然后将结果复制并粘贴到Excel中。 这个过程已经变得非常耗时,我想知道是否有一种简单的方法可以将我的一系列点预测和置信区间合并成一个数据框,然后我可以立即将所有数据导出到excel中。

感谢您的任何帮助。

这里有一个使用openxlsx ,我发现它比任何其他软件包更可取,因为它使用的是C ++而不是Java,而这通常会在内存写入甚至是小型表格的情况下使用。

如果遇到错误,您可能需要设置path为zip

错误:压缩工作簿失败。 请确保Rtools已安装,或者R可以使用zip应用程序。请在Windows上尝试installr :: install.rtools()。

 library(forecast) library(openxlsx) Sys.setenv(R_ZIPCMD = "C:/RBuildTools/3.1/bin/zip") # create dummy data library(data.table) set.seed(1) build <- data.table() F1 <- build[, lapply(seq(7), function(x) runif(24))] F1 <- ts(F1, frequency = 12, start = c(2014, 1), end = c(2015, 12)) Coonan <- F1[,3] Gallo <- F1[,4] Kempton<- F1[,5] Moore <- F1[,6] Nekic <- F1[,7] results <- list() fit.Coonan <- auto.arima(Coonan, stepwise = FALSE) results[["Coonan"]] <- forecast(fit.Coonan, h=3, level = c(20, 40, 80)) fit.Gallo <- auto.arima(Gallo, stepwise = FALSE) results[["Gallo"]] <- forecast(fit.Gallo, h=3, level = c(20, 40, 80)) fit.Kempton <- auto.arima(Kempton, stepwise = FALSE) results[["Kempton"]] <- forecast(fit.Kempton, h=3, level = c(20, 40, 80)) fit.Moore <- auto.arima(Moore, stepwise = FALSE) results[["Moore"]] <- forecast(fit.Moore, h=3, level = c(20, 40, 80)) fit.Nekic <- auto.arima(Nekic, stepwise = FALSE) results[["Nekic"]] <- forecast(fit.Nekic, h=3, level = c(20, 40, 80)) results_together <- do.call(rbind,lapply(names(results),function(x){ transform(as.data.frame(results[[x]]), Name = x) })) wb <- createWorkbook() addWorksheet(wb, "Forecasts") writeData(wb, "Forecasts", results_together, rowNames = TRUE) saveWorkbook(wb, "Forcasts.xlsx", overwrite = TRUE) 

结果在这:

在这里输入图像说明

您也可以将每个结果放在自己的选项卡上(无论是否添加Name列):

 wb <- createWorkbook() for (nm in names(results)){ addWorksheet(wb, nm) writeData(wb, nm, results[[nm]], rowNames = TRUE) } saveWorkbook(wb, "Forcasts.xlsx", overwrite = TRUE) 

导致:

在这里输入图像说明

mlegge,

这是一个绝妙的解决scheme。 我遇到了RTools的问题,并使用write.csv遇到了一个解决方法:

write.csv(results_together,file =“results_together.csv”)

-phos