In Inventory management, holding the right amount of SKUs (Stock Keeping Units) is paramount for business competitiveness in today’s market. You want to hold enough to satisfy demand but dont want to tie up to much capital in SKUs you don’t sell. How do we do this? Well, ABC categorizing is method that is extremely powerful and easy to implement. Its simple, the principals are:
These numbers can change, but they tend to keep in line with the aforementioned principals. Its easy to understand if we just do analysis using this method.
Today’s data is practice data on spare parts sales. Lets look at the structure of the data.
str(data)## 'data.frame': 4693 obs. of 4 variables:
## $ Index : int 1 2 3 4 5 6 7 8 9 10 ...
## $ Name : Factor w/ 4692 levels "PT0007-ftwiagvnf1",..: 670 4677 1906 2036 1890 2779 1013 1874 3599 2693 ...
## $ Unit.Cost: num 4266 3476 2636 2537 1761 ...
## $ Units : int 8 10 7 10 9 4 8 39 22 12 ...
So as we can see, there is an index, unit specific name, cost in $ and units sold. Now I want to get a unit total revenue variable by multiplying Units with Unit.Cost and the create a Unit percentage of total revenue.
data <- mutate(data,
Unit.Revenue = Unit.Cost*Units,
Unit.Per.Revenue = Unit.Revenue/sum(Unit.Revenue)*100,
Unit.Per.Revenue = round(Unit.Per.Revenue, digits = 2)
)Using Rs ABC package we will start our analysis on Unit.Revenue, since cost is always our end goal.
abc <- ABCanalysis(data$Unit.Revenue, PlotIt = TRUE)Now to construct individual data frames for the groups.
data <- data %>% arrange(desc(Unit.Revenue))
groupA.revenue <- data[1:576,]
groupB.revenue <- data[577:808,]
groupC.revenue <- data[808:4693,]Now the groups are created and action can be taken. But what action? In this ABC revenue analysis we have one goal, always have A products on hand. Why? Let me show you.
data$Unit.Revenue <- currency(data$Unit.Revenue, digits = 0L)
SetA <- data$Unit.Revenue[abc$Aind]
SetB <- data$Unit.Revenue[abc$Bind]
SetC <- data$Unit.Revenue[abc$Cind]print(data.sum)## Group A Group B Group C Total
## 1 $2,297,596 $122,730 $226,980 $2,647,306
What I just did there was extract the ABCs out of the original data frame and summed up Unit Revenue for each group, notice that A is significantly higher than B and C. This is why we always want to have those products on hand. This requires planing and evaluation of the supply chain. How long is lead time, are there risks in production, is our production partner up to standard and doing fine. As are where the company makes money, but like most spare parts retailer, having a wide selection is key, so we cant dismiss Bs and Cs, but they server as order generating products, not revenue driving.
Now we know which products we have to have on stock, but what about the workers? Can we make the warehouse an easier workspace for them. Yes, yes we can. Amount of units sold is not always equal to revenue driving product, but for workers they might always be picking the same product that might be in hard to reach places within our warehouse. So, lets use the same analysis, only now on sold products.
data <- data %>% arrange(desc(Units))
abc.ergonomic <- ABCanalysis(data$Units, PlotIt = TRUE)groupA.ergonomi <- data[1:1503,]
groupB.ergonomi <- data[1504:2414,]
groupC.ergonomi <- data[2415:4693,]All I did here was following the same steps as I did above. Now we can adjust our SKU location in relation to their grouping, As having the best and easiest to reach locations, Bs second after that and Cs having the worst location (if need be). This will ultimately increase workers productivity and precision, specially when not having to deal with hard to reach location, making it physically more straining on their body. Information is also key, so if this were real, I would label each location with their respective groupings, f.ex: AC would translate to A in location and C in revenue or BA meaning B in location and A in revenue. This would convey information quickly to the employee “This is why this product is here” and “This is its revenue group”. This is impoartant, because even though we want 100% successful shipping to our costumers, our employees must be extra careful when it comes to As.
Through just this simple analysis we can increase our warehouse workflow, have revenue generating products always on hand and hopefully increase employee satisfaction by decreasing their workload when it comes to picking.