Извлечение значений из фреймов данных, созданных в цикле, для дальнейшего анализа (я не уверен, как суммировать вопрос в одну строку) - PullRequest
0 голосов
/ 07 марта 2019

Мой необработанный набор данных имеет несколько идентификаторов продуктов, месячные продажи и соответствующую дату, упорядоченные в матричном формате.Я хочу создать отдельные кадры данных для каждого product_id, а также значения и даты продаж.Для этого я использую цикл for.

base - базовый набор данных.x - это переменная, которая содержит уникальный product_id и соответствующее количество точек наблюдения.

 for(i in 1:nrow(x)){
   n <- paste("df", x$vars[i], sep = "")
     assign(n, base[base[,1] == x$vars[i],])
     print(n)}

Это часть вывода:

[1] "df25"
[1] "df28"
[1] "df35"
[1] "df37"
[1] "df39"

Таким образом, все имена фреймов данных сохраняются в n.Это, я думаю, строковый вектор.

Когда я пишу df25 вне цикла, я получаю нужный мне фрейм данных:

> df25
# A tibble: 49 x 3
       ID date        Sales
    <dbl> <date>     <dbl>
 1     25 2014-01-01     0
 2     25 2014-02-01     0
 3     25 2014-03-01     0
 4     25 2014-04-01     0
 5     25 2014-05-01     0
 6     25 2014-06-01     0
 7     25 2014-07-01     0
 8     25 2014-08-01     0
 9     25 2014-09-01     0
10     25 2014-10-01     0
# ... with 39 more rows

Теперь я хочу использовать каждый из этих фреймов отдельновыполнить анализ прогноза.Для этого мне нужно получить значения в отдельных фреймах данных.Вот что я пробовал для того же:

for(i in 1:4) {print(paste0("df", x$vars[i]))}
[1] "df2"
[1] "df3"
[1] "df5"
[1] "df14"

Но я не могу сослаться на отдельные кадры данных.Я ищу помощь о том, как я могу получить доступ к фреймам данных с их значениями для дальнейшего анализа?Поскольку существует более 200 продуктов, я ищу некоторую функцию, которая обрабатывает все кадры данных.

Сначала я хочу преобразовать ее в TS, используя значения year и month изпеременную date и затем используйте ets или forecast, и т. д.

ОБРАЗЕЦ ДАННЫХ:

set.seed(354)
df <- data.frame(Product_Id = rep(1:10, each = 50), 
                     Date = seq(from = as.Date("2010/1/1"), to = as.Date("2014/2/1") , by = "month"), 
                     Sales = rnorm(100, mean = 50, sd= 20))
df <- df[-c(251:256, 301:312) ,]

Как всегда, любое предложение будет высоко оценено.

1 Ответ

0 голосов
/ 08 марта 2019

Я думаю, что это один из способов получить доступ к отдельным фреймам данных.Если есть лучший метод, пожалуйста, дайте мне знать:

    (Var <- get(paste0("df",x$vars[i])))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...