我正在嘗試替換我們的供應鏈團隊目前用于銷售預測和庫存預測的過時 Excel 報告,我正在為此使用 R。所需的輸出是一個資料框,其中一列是N 周跨度內每周的預計期末庫存頭寸。
我正在努力解決的部分是結清庫存頭寸的遞回計算。下面是帶有虛擬資料的資料框子集,其中“stock_projection”是期望的結果。
我剛剛開始學習 R 中的遞回,所以我不太確定如何在這里實作它。任何幫助都感激不盡!
| 星期 | 預報 | 上市股票 | 股票_投影 |
|---|---|---|---|
| 1 | 10 | 100 | 100 |
| 2 | 11 | 89 | |
| 3 | 12 | 77 | |
| 4 | 10 | 67 | |
| 5 | 11 | 56 | |
| 6 | 10 | 46 | |
| 7 | 12 | 34 | |
| 8 | 11 | 23 | |
| 9 | 9 | 14 | |
| 10 | 12 | 2 |
更新
我設法修改了此處解釋的解決方案并復制了上述結果:
inventory<- tibble(week = 1, opening_stock = 100)
forecast<- tibble(week = 2:10, forecast = c(11, 12, 10, 11, 10, 12, 11, 9, 12) )
dat <- full_join(inventory, forecast)
dat2 <- dat %>%
mutate(forecast = -forecast) %>%
gather(transaction, value, -week) %>%
arrange(week) %>%
mutate(value = replace_na(value, 0))
dat2 %>%
mutate(value = cumsum(value)) %>%
ungroup() %>%
group_by(week) %>%
summarise(stock_projection = last(value))
盡管像魅力一樣作業,但我想知道是否有另一種方法可以實作這一目標?
uj5u.com熱心網友回復:
我認為在上面的問題中,您不必太擔心遞回,因為股票預測看起來就像開盤股票減去預測的累積總和。你可以這樣做:
library(dplyr)
dat <- tibble(
week = 1:10,
forecast = c(10,11,12,10,11,10,12,11,9,12),
opening_stock = c(100, rep(NA, 9))
)
dat <- dat %>%
mutate(fcst = case_when(week == 1 ~ 0,
TRUE ~ forecast),
stock_projection = case_when(
week == 1 ~ opening_stock,
TRUE ~ opening_stock[1] - cumsum(fcst))) %>%
dplyr::select(-fcst)
dat
# # A tibble: 10 × 4
# week forecast opening_stock stock_projection
# <int> <dbl> <dbl> <dbl>
# 1 1 10 100 100
# 2 2 11 NA 89
# 3 3 12 NA 77
# 4 4 10 NA 67
# 5 5 11 NA 56
# 6 6 10 NA 46
# 7 7 12 NA 34
# 8 8 11 NA 23
# 9 9 9 NA 14
# 10 10 12 NA 2
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/367238.html
上一篇:在Excel中轉換日期/時間格式
