从 R 中的列表中提取值:Arima 函数的一个例子
Extract values from a list in R: A case of Arima function
我必须用 Arima 函数 处理我的数据系列。这导致 list 我希望将其转换为 dataframe 以便更好地操作。
为了重新创建示例,我将使用以下 数据框:
df <- data.frame(
stringsAsFactors = FALSE,
Season = c("Summer 1998",
"Winter 1998-1999","Summer 1999","Winter 1999-2000","Summer 2000",
"Winter 2000-2001","Summer 2001","Winter 2001-2002",
"Winter 2003-2004","Summer 2009","Winter 2009-2010",
"Summer 2010","Winter 2010-2011","Summer 2011",
"Winter 2011-2012","Summer 2012","Winter 2012-2013","Summer 2013",
"Winter 2013-2014","Summer 2014","Winter 2014-2015",
"Summer 2015","Winter 2015-2016","Summer 2016",
"Winter 2016-2017","Summer 2017"),
Luxembourg = c(30.86,39.77,23.71,37.67,
35.66,39.45,37.49,29.28,24.01,30.19,24.24,35.26,35.9,
27.3,39.53,36.9,30.3,45.85,29.52,35.3,27.34,
57.74,26.83,51.19,21.2,29.89),
Germany = c(NA,NA,NA,16.48,33.34,35.39,
27.04,25.53,21.65,31.77,19.43,29.35,26.94,19.37,
36.69,44.23,21.36,36.17,39.41,48.24,21.35,NA,NA,
NA,NA,NA),
France = c(NA,NA,NA,16.48,33.34,35.39,
26.74,23.68,19.06,34.01,17.15,18.69,28.33,20.33,
30.64,40.31,20.24,36.17,40.14,45.25,20.17,NA,NA,
NA,NA,NA),
Greece = c(NA,NA,NA,16.73,41.81,31.91,
27.25,29.75,18.82,33.8,21.47,18.54,25.39,20.64,
42.94,16.73,26.09,58.06,23.02,46.77,26.34,NA,NA,
NA,NA,NA),
Spain = c(NA,NA,NA,16.73,41.81,31.91,
27.25,29.75,18.82,29.46,18.72,18.86,20.08,18.32,
35.14,19.99,24.75,34.19,28.48,33.49,23.56,NA,NA,
NA,NA,NA)
#Apply arima function to my data frame
library(forecast)
results_1 <- sapply(df[-1], Arima, order = c(1,0,0))
结果如下:
要提取 拟合值 并将它们转换为 数据框 我编码:
results_2 <- cbind(df[1],do.call(cbind,
lapply(df[-1], function(x) as.numeric(Arima(x)$fitted, order = c(1,0,0)))))
结果如下 table:
这不是我从 results_1
得到的 拟合值
我想提取每个国家的拟合值并将它们转换成数据框。
如有任何帮助,我们将不胜感激!
order
参数应该在 Arima
函数内。
results_2 <- cbind(df[1],do.call(cbind, lapply(df[-1], function(x)
as.numeric(Arima(x, order = c(1,0,0))$fitted))))
你应该unlist
然后重新组装成数据帧
results_2 <- as.data.frame(matrix(unlist(results_1['fitted',]),ncol = 5, byrow = F))
results_2 <- cbind(df$Season, results_2)
colnames(results_2) <- c('Season',colnames(results_1))
results_2
我必须用 Arima 函数 处理我的数据系列。这导致 list 我希望将其转换为 dataframe 以便更好地操作。
为了重新创建示例,我将使用以下 数据框:
df <- data.frame(
stringsAsFactors = FALSE,
Season = c("Summer 1998",
"Winter 1998-1999","Summer 1999","Winter 1999-2000","Summer 2000",
"Winter 2000-2001","Summer 2001","Winter 2001-2002",
"Winter 2003-2004","Summer 2009","Winter 2009-2010",
"Summer 2010","Winter 2010-2011","Summer 2011",
"Winter 2011-2012","Summer 2012","Winter 2012-2013","Summer 2013",
"Winter 2013-2014","Summer 2014","Winter 2014-2015",
"Summer 2015","Winter 2015-2016","Summer 2016",
"Winter 2016-2017","Summer 2017"),
Luxembourg = c(30.86,39.77,23.71,37.67,
35.66,39.45,37.49,29.28,24.01,30.19,24.24,35.26,35.9,
27.3,39.53,36.9,30.3,45.85,29.52,35.3,27.34,
57.74,26.83,51.19,21.2,29.89),
Germany = c(NA,NA,NA,16.48,33.34,35.39,
27.04,25.53,21.65,31.77,19.43,29.35,26.94,19.37,
36.69,44.23,21.36,36.17,39.41,48.24,21.35,NA,NA,
NA,NA,NA),
France = c(NA,NA,NA,16.48,33.34,35.39,
26.74,23.68,19.06,34.01,17.15,18.69,28.33,20.33,
30.64,40.31,20.24,36.17,40.14,45.25,20.17,NA,NA,
NA,NA,NA),
Greece = c(NA,NA,NA,16.73,41.81,31.91,
27.25,29.75,18.82,33.8,21.47,18.54,25.39,20.64,
42.94,16.73,26.09,58.06,23.02,46.77,26.34,NA,NA,
NA,NA,NA),
Spain = c(NA,NA,NA,16.73,41.81,31.91,
27.25,29.75,18.82,29.46,18.72,18.86,20.08,18.32,
35.14,19.99,24.75,34.19,28.48,33.49,23.56,NA,NA,
NA,NA,NA)
#Apply arima function to my data frame
library(forecast)
results_1 <- sapply(df[-1], Arima, order = c(1,0,0))
结果如下:
要提取 拟合值 并将它们转换为 数据框 我编码:
results_2 <- cbind(df[1],do.call(cbind,
lapply(df[-1], function(x) as.numeric(Arima(x)$fitted, order = c(1,0,0)))))
结果如下 table:
这不是我从 results_1
我想提取每个国家的拟合值并将它们转换成数据框。
如有任何帮助,我们将不胜感激!
order
参数应该在 Arima
函数内。
results_2 <- cbind(df[1],do.call(cbind, lapply(df[-1], function(x)
as.numeric(Arima(x, order = c(1,0,0))$fitted))))
你应该unlist
然后重新组装成数据帧
results_2 <- as.data.frame(matrix(unlist(results_1['fitted',]),ncol = 5, byrow = F))
results_2 <- cbind(df$Season, results_2)
colnames(results_2) <- c('Season',colnames(results_1))
results_2