函数mutate_if和函数auto.arima

时间:2019-02-22 16:48:42

标签: r dplyr

我正在尝试创建一个表,以从函数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模型。

数据库: enter image description here

先谢谢了。

1 个答案:

答案 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,因为在这种情况下后者会选择所有列,并且我猜想您要排除此年的年份列。

希望这会有所帮助。