0

我的原始数据集有多个产品 ID、月销售额和以矩阵格式排列的相应日期。我希望为每个 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 多个产品,我正在寻找一些处理所有数据帧的功能。

首先,我希望将其转换为变量中的 a TS、 usingyearmonthdate,然后使用etsorforecast,等​​。

样本数据集:

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) ,]

与往常一样,任何建议都将受到高度赞赏。

4

1 回答 1

0

我认为这是访问单个数据帧的一种方法。如果有更好的方法,请告诉我:

    (Var <- get(paste0("df",x$vars[i])))
于 2019-03-08T13:46:19.013 回答