让我们从头开始:将在 Tableau 中读取 R 输出以创建仪表板,因此我需要 R 输出以某种方式看起来。考虑到这一点,我从 R 中的数据框开始,其中包含 n 组时间序列。我想按组运行 auto.arima (或包预测中的另一种预测方法)。我正在使用 by 函数来做到这一点,但我并不依附于这种方法,这对于像我这样的 R 初学者来说似乎可以完成这项工作。我需要的输出将在原始数据帧中附加一个(比如说)1 个周期的预测,填充日期(变量 t)和变量(变量类)。如果可能的话,我希望通过变量(即class_1,...class_n,)泛化到多个的方法。
#generate fake data
t<-seq(as.Date("2012/1/1"), by = "month", length.out = 36)
class<-rep(c("A","B"),each=18)
set.seed(1234)
metric<-as.numeric(arima.sim(model=list(order=c(2,1,1),ar=c(0.5,.3),ma=0.3),n=35))
df <- data.frame(t,class,metric)
df$type<-"ORIGINAL"
#sort of what I'd like to do
library(forecast)
ts<-ts(df$metric)
ts<-by(df$metric,df$class,auto.arima)
#extract forecast and relevant other pieces of data
#???
#what I'd like to look like
t<-as.Date(c("2013/7/1","2015/1/1"))
class<-rep(c("A","B"),each=1)
metric<-c(1.111,2.222)
dfn <- data.frame(t,class,metric)
dfn$type<-"FORECAST"
dfinal<-rbind(df,dfn)
只要它以看起来像我描述的那样的数据框开始,并输出像我描述的输出那样的数据框,我就不会附在操作方法上。