【发布时间】:2021-09-08 05:30:34
【问题描述】:
我有时间序列,必须使用 auto.arima 函数进行校正。我获得了结果,但我在排列数据方面遇到了麻烦。为了重现该问题,我将使用以下数据框。
df <- data.frame(
stringsAsFactors = FALSE,
Season = c("Winter 1996-1997",
"Summer 1997","Winter 1997-1998","Summer 1998","Winter 1998-1999",
"Summer 1999","Winter 1999-2000","Summer 2000",
"Winter 2000-2001","Summer 2001","Winter 2001-2002",
"Summer 2002","Winter 2002-2003","Summer 2003",
"Winter 2003-2004","Summer 2004","Winter 2004-2005","Summer 2005",
"Winter 2005-2006","Summer 2006","Winter 2006-2007",
"Summer 2007","Winter 2007-2008"),
France = c(33.83,65.51,26.41,30.86,
39.77,23.71,37.67,35.66,39.45,37.49,29.28,51.38,
35.93,33.33,24.01,36.03,26.45,16.48,25.72,39.93,41.8,
29.31,32.79),
Germany = c(27.06,35.93,28.92,21.65,
25.72,39.93,16.48,33.34,35.39,27.04,25.53,27.06,
35.93,28.92,21.65,40.93,18.55,42.34,17.29,21.8,34.95,
25.02,29.92),
Spain = c(42.26,32.91,27.91,19.06,
17.29,21.8,16.48,33.34,35.39,26.74,23.68,42.26,32.91,
27.91,19.06,38.69,15.02,60.2,16.56,28.72,26.37,
22.92,26.88),
Luxembourg = c(NA,NA,NA,NA,16.56,28.72,
16.73,41.81,31.91,27.25,29.75,48.36,24.26,26.24,
18.82,33.41,17.56,69.72,17.68,23.08,40.39,22.3,
35.61))
library(forecast)
#run auto.arima function and unlist the results in a data frame
library(forecast)
Auto_arima_results <- as.data.frame(do.call(rbind, lapply(df[-1], auto.arima)))
#obtain only the fitted values
Auto_arima_fitted_values <- Auto_arima_results %>% select(contains("fitted"))
我最终得到以下结果:
但我想获得的是一个数据框,其中:
a) 第 1 列是季节
b) 第 2 到 4 列是国家(法国、德国、西班牙和卢森堡)
c) 这些国家的值是我从 arima 函数获得的拟合值。
任何帮助将不胜感激
【问题讨论】:
标签: r dataframe lapply arima rbind