我正在尝试创建一个表,以从函数auto.arima
接收数据。
我在代码中使用了mutate_if,但无法正常工作。
这是我尝试过的。
Auto.arima功能
FunArima<- function(x){
arima <- auto.arima(x)
previsao <- forecast(arima, h=12)
plot(previsao)
previsao
}
FunArima(Base$a)
Mutate_IF
df <- Base [2:5]
df1 <- df %>%
mutate_if(is.numeric, function(x) FunArima)
我的问题是?我需要为表中的每一列创建一个Arima模型。
数据库:
先谢谢了。
答案 0 :(得分:1)
问题在于您的函数FunArima
不会返回与x
相同长度的向量,而是返回类型为forecast
的对象。
您可以做的是在mutate_if
内部调整函数调用,以便仅返回预测:
tibble(year = 2010 : 2017, x = c(1,1,2,5,4,3,2,1), y = c(2,3,3,6,6,4,4,2)) %>%
mutate_at(vars(-"year"), ~FunArima(.x)$fitted)
还请注意,我宁愿使用mutate_at
而不是mutate_if
,因为在这种情况下后者会选择所有列,并且我猜想您要排除此年的年份列。
希望这会有所帮助。