R根据接下来的3个值生成运行总计
我试图通过将接下来的3个值和接下来的4个值相加来生成一个序列,以计算R中的预测交付周期和预测供应周。在第一行中,我填充了这两个值的预期值,分别为1.008和1.64。您能建议如何在R中生成此跑步系列吗?谢谢 预测提前期(FL)=第2,3,4周的系统预测和 预测供应周数(FWOS)=第5、6、7、8周的系统供应总量 SKU存储区CD FWK CD工作顺序NBR系统用于C FL FWO 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 0R根据接下来的3个值生成运行总计,r,cumulative-sum,R,Cumulative Sum,我试图通过将接下来的3个值和接下来的4个值相加来生成一个序列,以计算R中的预测交付周期和预测供应周。在第一行中,我填充了这两个值的预期值,分别为1.008和1.64。您能建议如何在R中生成此跑步系列吗?谢谢 预测提前期(FL)=第2,3,4周的系统预测和 预测供应周数(FWOS)=第5、6、7、8周的系统供应总量 SKU存储区CD FWK CD工作顺序NBR系统用于C FL FWO 12345 10 201648 935 0.328 1.008 1.64 12345
12345 10 201705 944 0.422 0 0 0遵循@akrun方法,但使用库
zoo
和dplyrlead
。我已按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
df%
分组依据(SKU、存储光盘)%>%
变异(预测提前期=rollsum(提前期,3,na.pad=TRUE,align=“left”),
forecast\u weeksofsupply=rollsum(lead(系统用于C,4),4,na.pad=TRUE,align=“left”))
#SKU门店\u CD FWK\u CD工作顺序\u NBR系统\u预测\u交付周期预测\u供应周
# 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 0.414 1.281 NA
#7 12345 10 201702 941 0.433 1.270 NA
#8 12345 10 201703 942 0.427不适用
#9 12345 10 201704 943 0.421不适用
#10 12345 10 201705 944 0.422不适用
您尝试了什么?为什么它不起作用?尝试使用roll\u sum
fromRcppRoll
即c(roll\u sum(df1$SYS\u FORC,3,fill=NA,align=“left”)[-1],NA)
并在第二列中,将3到4个hanks更改为响应。我是R新手。我添加了一个包含所有列的图像,并在第一行填充了预期值。非常感谢您在这方面的帮助。我尝试过这个方法,但不幸的是它没有起到作用,calc_need=calc_need%>%mutate(forecast_lt=c(roll_sum(calc_need$SYS_FORC,3,fill=NA,align=“left”)[-1],NA))>%mutate(forecast_wos=c(roll__sum(calc_need$SYS FORC,4,fill=NA,align=“left”)[-1],NA))df$SYS_FORC
应该是。不管怎么说,它之所以奏效,是因为只有一个小组。