使用嵌套时间系列列作为函数的输入,将值返回到嵌套的df

时间:2017-03-28 16:18:24

标签: r dplyr

我想使用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的嵌套列中。

1 个答案:

答案 0 :(得分:2)

您可以使用purrr::map2并行映射ts.union的输入:

dtf %>% mutate(union = map2(ts, pred, ts.union))