取消嵌套 ts class

Unnest a ts class

我的数据有多个具有不同开始和结束日期的客户数据以及他们的销售额 data.So 我做了简单的指数平滑。 我应用了以下代码来应用 ses

library(zoo)
library(forecast)

z <- read.zoo(data_set,FUN = function(x) as.Date(x) + seq_along(x) / 10^10 , index = "Date", split = "customer_id")
L <- lapply(as.list(z), function(x) ts(na.omit(x),frequency = 52))
HW <- lapply(L, ses)

现在我的输出 class 是 list 不均匀 lengths.Can 有人帮助我如何将输出取消嵌套或取消列出到数据框中并获得拟合值、实际值、残差以及他们的日期、销售额和 customer_id。 注意:我 post 我的输入数据而不是 HW 的数据的原因是 HW 数据太大。 有人可以在 R 中帮助我吗?

我会使用 tidyverse 包来处理这个问题。

map(HW, ~ .x %>% 
      as.data.frame %>%             # convert each element of the list to data.frame
      rownames_to_column) %>%       # add row names as columns within each element
  bind_rows(.id = "customer_id")    # bind all elements and add customer ID

我不确定如何将日期和实际销售额与您的输出相关联 (HW)。如果你解释一下,我也可能会提供那部分问题的解决方案。

首先将所有唯一的 customer_id 放入一个名为 'k'

的变量中
 k <- unique(data_set$customer_id)

创建了一个空数据框

   b <- data.frame()

使用for循环提取所有拟合值并存储在'a'中。使用rbind函数将所有拟合值附加到数据框'b'

for(key in k){    
  print(a <- as.data.frame((as.numeric(HW_ses[[key]]$model$fitted))))
  b <- rbind(b,a)     
    }

最后使用列绑定函数将输入数据集附加到数据框 'b'

data_set_final <- cbind(data_set,b)