Unnest TS класса - PullRequest
       16

Unnest TS класса

0 голосов
/ 19 ноября 2018

Мои данные содержат данные о нескольких клиентах с разными датами начала и окончания, а также данные о продажах. Так что я сделал простое экспоненциальное сглаживание. Я применил следующий код, чтобы применить 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)

Теперь мой выходной класс list с неравной длиной. Кто-нибудь может мне помочь, как развернуть или отменить вывод выходных данных во фрейм данных и получить подогнанные значения, фактические значения, остатки вместе с их датами, продажами и customer_id. Примечание: резонанс, который я публикую для своих входных данных, а не для данных HW, слишком велик для данных HW. Может ли кто-нибудь помочь мне в R.

Ответы [ 2 ]

0 голосов
/ 29 ноября 2018

Сначала взял все уникальные 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)
0 голосов
/ 20 ноября 2018

Я бы использовал пакет 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). Если вы объясните это, я мог бы также решить эту часть проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...