R 根据接下来的 3 个值生成 运行 总计
R Generating Running Totals based on next 3 values
我试图通过对接下来的 3 个值和接下来的 4 个值求和来生成一个序列,以计算 forcast_leadtime 并预测 R 中的供应周数。在第一行中,我填充了两者的预期值分别为 1.008 和 1.64。您能否建议如何在 R 中生成此 运行 系列。谢谢
forecast_leadtime(FL) = 第 2,3 周 SYS_FORC 的总和 4
forecast_weeks 供应量 (FWOS) = 第 5、6、7、8 周 SYS_FORC 的总和
SKU STORE_CD FWK_CD WK_Sequence_NBR SYS_FORC FL FWOS
12345 10 201648 935 0.328 1.008 1.64
12345 10 201649 936 0.326 0 0
12345 10 201650 937 0.323 0 0
12345 10 201651 938 0.359 0 0
12345 10 201652 939 0.366 0 0
12345 10 201701 940 0.414 0 0
12345 10 201702 941 0.433 0 0
12345 10 201703 942 0.4enter image description here27 0 0
12345 10 201704 943 0.421 0 0
12345 10 201705 944 0.422 0 0
遵循@akrun 方法,但使用库 zoo
和 dplyr lead
。我已按 SKU STORE_CD 分组以表明这是可能的
df <- read.table(header= TRUE, text=
"SKU STORE_CD FWK_CD WK_Sequence_NBR SYS_FORC forecast_leadtime forecast_weeksofsupply
12345 10 201648 935 0.328 1.008 1.64
12345 10 201649 936 0.326 0 0
12345 10 201650 937 0.323 0 0
12345 10 201651 938 0.359 0 0
12345 10 201652 939 0.366 0 0
12345 10 201701 940 0.414 0 0
12345 10 201702 941 0.433 0 0
12345 10 201703 942 0.427 0 0
12345 10 201704 943 0.421 0 0
12345 10 201705 944 0.422 0 0
")
library(zoo)
library(dplyr)
df %>%
group_by(SKU, STORE_CD) %>%
mutate(forecast_leadtime = rollsum(lead(SYS_FORC), 3, na.pad = TRUE, align = "left"),
forecast_weeksofsupply = rollsum(lead(SYS_FORC, 4), 4, na.pad = TRUE, align = "left"))
# SKU STORE_CD FWK_CD WK_Sequence_NBR SYS_FORC forecast_leadtime forecast_weeksofsupply
# 1 12345 10 201648 935 0.328 1.008 1.640
# 2 12345 10 201649 936 0.326 1.048 1.695
# 3 12345 10 201650 937 0.323 1.139 1.703
# 4 12345 10 201651 938 0.359 1.213 NA
# 5 12345 10 201652 939 0.366 1.274 NA
# 6 12345 10 201701 940 0.414 1.281 NA
# 7 12345 10 201702 941 0.433 1.270 NA
# 8 12345 10 201703 942 0.427 NA NA
# 9 12345 10 201704 943 0.421 NA NA
# 10 12345 10 201705 944 0.422 NA NA
我试图通过对接下来的 3 个值和接下来的 4 个值求和来生成一个序列,以计算 forcast_leadtime 并预测 R 中的供应周数。在第一行中,我填充了两者的预期值分别为 1.008 和 1.64。您能否建议如何在 R 中生成此 运行 系列。谢谢
forecast_leadtime(FL) = 第 2,3 周 SYS_FORC 的总和 4 forecast_weeks 供应量 (FWOS) = 第 5、6、7、8 周 SYS_FORC 的总和
SKU STORE_CD FWK_CD WK_Sequence_NBR SYS_FORC FL FWOS 12345 10 201648 935 0.328 1.008 1.64 12345 10 201649 936 0.326 0 0 12345 10 201650 937 0.323 0 0 12345 10 201651 938 0.359 0 0 12345 10 201652 939 0.366 0 0 12345 10 201701 940 0.414 0 0 12345 10 201702 941 0.433 0 0 12345 10 201703 942 0.4enter image description here27 0 0 12345 10 201704 943 0.421 0 0 12345 10 201705 944 0.422 0 0
遵循@akrun 方法,但使用库 zoo
和 dplyr lead
。我已按 SKU STORE_CD 分组以表明这是可能的
df <- read.table(header= TRUE, text=
"SKU STORE_CD FWK_CD WK_Sequence_NBR SYS_FORC forecast_leadtime forecast_weeksofsupply
12345 10 201648 935 0.328 1.008 1.64
12345 10 201649 936 0.326 0 0
12345 10 201650 937 0.323 0 0
12345 10 201651 938 0.359 0 0
12345 10 201652 939 0.366 0 0
12345 10 201701 940 0.414 0 0
12345 10 201702 941 0.433 0 0
12345 10 201703 942 0.427 0 0
12345 10 201704 943 0.421 0 0
12345 10 201705 944 0.422 0 0
")
library(zoo)
library(dplyr)
df %>%
group_by(SKU, STORE_CD) %>%
mutate(forecast_leadtime = rollsum(lead(SYS_FORC), 3, na.pad = TRUE, align = "left"),
forecast_weeksofsupply = rollsum(lead(SYS_FORC, 4), 4, na.pad = TRUE, align = "left"))
# SKU STORE_CD FWK_CD WK_Sequence_NBR SYS_FORC forecast_leadtime forecast_weeksofsupply
# 1 12345 10 201648 935 0.328 1.008 1.640
# 2 12345 10 201649 936 0.326 1.048 1.695
# 3 12345 10 201650 937 0.323 1.139 1.703
# 4 12345 10 201651 938 0.359 1.213 NA
# 5 12345 10 201652 939 0.366 1.274 NA
# 6 12345 10 201701 940 0.414 1.281 NA
# 7 12345 10 201702 941 0.433 1.270 NA
# 8 12345 10 201703 942 0.427 NA NA
# 9 12345 10 201704 943 0.421 NA NA
# 10 12345 10 201705 944 0.422 NA NA