抱歉,如果这是一个基本的问题,但我只是不能解决这个问题作为一个初学者-我试图找到类似的问题,但没有成功…
我有一个下面的数据框,其中每个产品和每个地区的组合的增长率都会变化,并在10年内保持不变(我从另一个数据框中离开_加入它).
我只有本年度的销售额,并希望预测10年来使用增长率给出试图产生的结果在sales_expected
.
product | region | year | growth | sales | sales_expected |
---|---|---|---|---|---|
productA | regionA | 2023 | 0.1 | 100 | 100 |
productA | regionA | 2024 | 0.1 | 110 | |
productA | regionA | 2025 | 0.1 | 121 | |
productA | regionA | 2026 | 0.1 | 133 | |
productA | regionA | 2027 | 0.1 | 146 | |
productA | regionA | 2028 | 0.1 | 161 | |
productA | regionA | 2029 | 0.1 | 177 | |
productA | regionA | 2030 | 0.1 | 195 | |
productA | regionA | 2031 | 0.1 | 214 | |
productA | regionA | 2032 | 0.1 | 236 | |
productA | regionB | 2023 | 0.06 | 100 | 100 |
productA | regionB | 2024 | 0.06 | 106 | |
productA | regionB | 2025 | 0.06 | 112 | |
... | ... | ... | ... |
在我的管道中,我try 使用从purr
开始累积的包:
mutate(sales_expected = accumulate(sales, fill_in))
与查找sales
列内的下一个n.a并应用增长率的fill_in
函数相结合:
fill_in <- function(prev, new, growth) {
growth_rate <- 0.1
if_else(!is.na(new), new, prev * (1 + growth_rate))
}
这是可行的,但我搞不懂的是如何有条件地更改此函数中的growth_rate
参数,即它应该从第growth
列中选取,而不是我手动键入,因为这显然不适用于将新的产品和区域组合引入增长率变化的数据框中.
非常感谢你的帮助!