我想使用ts.union()
在我的嵌套数据框中创建一个列,ts.union()
的输入是嵌套数据框中的两个嵌套时间系列。见下面的设置。
library(tidyverse)
library(forecast)
ts_special <- function(df){ts(df,start = c(2010,01), frequency = 4)}
ets_spec <- function(df){ets(df, mod="MMM", opt.crit="lik", damped=NULL)}
x <- cumsum(rnorm(48))
grp <- rep(c("A","B"), 24)
dtf <- cbind(x, grp) %>% data.frame
dtf <- dtf %>% group_by(grp) %>% nest
dtf <- dtf %>% mutate(ts = map(data, ts_special))
dtf <- dtf %>% mutate(ets = map(ts, ets_spec))
dtf <- dtf %>% mutate(ets_fcast = map(ets, forecast))
dtf <- dtf %>% mutate(pred= map(dtf$ets_fcast, ~ .x[["mean"]]))
# below works but I want to do this the dplyr way and nest this result in a column in dtf
ts.union(dtf$ts[[1]], dtf$pred[[1]])
我希望每个组的时间序列和预测组合的ts.union
结果存储在我的数据框dtf
的嵌套列中。
答案 0 :(得分:2)
您可以使用purrr::map2
并行映射ts.union
的输入:
dtf %>% mutate(union = map2(ts, pred, ts.union))