【发布时间】:2018-09-30 11:59:30
【问题描述】:
我有多种产品与每日销售额相关。我想根据每种产品的运行累计销售额和我预计在一段时间内的总销售额来预测这些产品的预期每日销售额。
第一个表(“key”)包含每种产品的预期总销售额,以及我根据已售出的数量预测每天的销售量(即,如果我对产品 A 的累计销售额为650,我已经卖出了 1500 总数中的 43%,因此预计第二天会卖出 75,因为 40%
我想根据预测的销量更新每个产品的第二个表(“数据”)累计销量。预测量取决于上一期间的累计销售额,这意味着我无法独立计算每一列,因此我认为我需要使用循环。
但是,我的数据库有超过 500,000 行,而我使用 for 循环的最佳尝试太慢而无法实现。想法?我认为 Rcpp 实现可能是一个潜在的解决方案,但我之前没有使用过那个包或 C++。期望的最终答案如下所示(“final”)。
library(data.table)
key <- data.table(Product = c(rep("A",5), rep("B",5)), TotalSales =
c(rep(1500,5),rep(750,5)), Percent = rep(seq(0.2, 1, 0.2),2), Forecast =
c(seq(125, 25, -25), seq(75, 15, -15)))
data <- data.table(Date = rep(seq(1, 9, 1), 2), Product=rep(c("A", "B"),
each=9L), Time = rep(c(rep("Past",4), rep("Future",5)),2), Sales = c(190,
165, 133, 120, 0, 0, 0, 0, 0, 72, 58, 63, 51, 0, 0, 0, 0, 0))
final <- data.table(data, Cum = c(190, 355, 488, 608, 683, 758, 833, 908,
958, 72, 130, 193, 244, 304, 349, 394, 439, 484), Percent.Actual = c(0.13,
0.24, 0.33, 0.41, 0.46, 0.51, 0.56, 0.61, 0.64, 0.10, 0.17, 0.26, 0.33,
0.41, 0.47, 0.53, 0.59, 0.65), Forecast = c(0, 0, 0, 0, 75, 75, 75, 75, 50,
0, 0, 0, 0, 60, 45, 45, 45, 45))
【问题讨论】:
-
为什么
Cum值从第 10 行重新开始? -
请编辑以避免“文字墙”印象。
-
我认为您的数据和最终表格缺少可以回答 @MKR 问题的 Product 列。
-
“最终”表合并到先前构建的“数据”表中,该表有一个产品列。每个产品的“Cum”列都会重置。
标签: r performance for-loop data.table rcpp