Фрейм данных 1:
Item LC1 LC2 LC3
8T4121 MW92 OY01 RM11
Фрейм данных 2:
Item LC custfcst
8T4121 MW92 10
8T4121 OY01 12
8T4121 RM11 10
AB7654 MW92 20
AB7654 WK14 10
AB7654 RM11 8
Фрейм данных 3:
Item LC ToLC Rolledfcst
8T4121 MW92 OY01 22
8T4121 OY01 RM11 10
AB7654 MW92 WK14 30
AB7654 WK14 RM11 12
Фрейм данных 4:
Item LC Safetystock(SS) X
8T4121 MW92 15 .25
8T4121 OY01 7 .25
8T4121 RM11 5 .25
AB7654 MW92 30 .25
AB7654 WK14 8 .25
AB7654 RM11 20 .25
Вывод: это вывод, когда я беру одну строку в качестве ввода в Dataframe 1
Item LC xprcnt remainingss prcntvalue share SSNew `Leftover`
1 8T4121 MW92 3.75 11.25 0.3125000 3.515625 7.265625 7.734375
2 8T4121 OY01 1.75 5.25 0.5454545 2.863636 4.613636 2.386364
3 8T4121 RM11 NA NA NA NA NA NA
Но когда я беру более 1 строки в качестве ввода в dataframe 1, это не дает желаемого результата.Может ли кто-нибудь помочь мне с этим.
Кадр данных 1:
Item LC1 LC2 LC3
8T4121 MW92 OY01 RM11
AB7654 MW92 WK14 RM11
Код:
library(plyr)
library(dplyr)
library(igraph)
library(data.table)
library(magrittr)
library(tidyr)
lctolc <- read.csv("LCtoLC.csv") #DF to get DF1
custfcst <- read.csv("custfcst.csv") #DF2
rolledfcst <- read.csv("rolledfcst.csv") #DF3
safetystock <- read.csv("safetystock.csv") #DF4
bodlane <- lapply(
lapply(split(lctolc, lctolc$Item), function(x) graph.data.frame(x[, 2:3])),
function(x) lapply(
all_simple_paths(x, from = V(x)[degree(x, mode = "in") == 0],
to = V(x)[degree(x, mode = "out") == 0]),
function(y) as.data.table(t(names(y))) %>% setnames(paste0("LC", seq_along(.)))
) %>% rbindlist(fill = TRUE)
) %>% rbindlist(fill = TRUE, idcol = "Item")
distributn <- bodlane %>%
as_tibble() %>%
gather(key = LC_ref, value = LC, - Item) %>%
left_join(select(custfcst, -Item), by = "LC") %>%
left_join(select(rolledfcst, -Item), by = "LC","ToLC") %>%
left_join(select(safetystock, -Item), by = "LC") %>%
mutate(xprcnt= (x * SS)) %>%
mutate(remainingss= (SS - xprcnt)) %>%
mutate(prcntvalue = (custfcst / (custfcst +Rolledfcst))) %>%
mutate(share = (prcntvalue * remainingss)) %>%
mutate(SSNew = (xprcnt + share)) %>%
mutate(Leftover = (SS - SSNew)) %>%
select(Item, LC, xprcnt, remainingss,prcntvalue,share,SSNew,Leftover)