如何在R中执行ABC分析?

时间:2013-07-08 20:22:30

标签: r

我希望使用R来运行ABC分析,也称为帕累托分析。 ABC分析是一个商业术语,用于定义材料管理中常用的分类技术。

每个班级没有固定的门槛,可根据目标和标准应用不同的比例。 ABC分析类似于帕累托原则,因为'A'项目通常占整体价值的很大一部分,但占项目数量的一小部分。

3 个答案:

答案 0 :(得分:3)

严肃地说,我认为abc包是巧合命名的共同供应管理技术。 abc包创建已知变量的模型,而OP想要基于单个已知变量(收入)创建分类变量。在abc包中,记录根据变量的进行分类;根据所讨论的abc技术,记录根据聚合的值进行分类。例如。所有零件号4132457被分类为“A”。

这是一个普通的计算:你在R中的表现并不比你在电子表格中好。如果一个人坚持R实现,我会推荐以下内容:

library(plyr)
z <- data.frame(Part.Number =c(rep(letters[15:1], seq_along(letters[15:1]))), 
                Price = c(rep(1:15, seq_along(15:1))), 
                Qty.Sold = sample(1:120))
z[90:120, ]$Qty.Sold <- z[90:120, ]$Qty.Sold * 10 # creates fake data
z.summary <- ddply(z, .(Part.Number), summarise, 
                   Revenue = sum(Price * Qty.Sold)) # summarise fake data

z.summary <- within(z.summary, {
    Percent.Revenue <- cumsum(rev(sort(Revenue)))/sum(Revenue)
    ABC <- ifelse(Percent.Revenue > 0.91, "C",
           ifelse(Percent.Revenue < 0.81, "A", "B"))
})

z.summary
#    Part.Number Revenue Percent.Revenue ABC
# 1            a  140850       0.4461246   A
# 2            b  113960       0.8070784   A
# 3            c   21788       0.8760892   B
# 4            d    8220       0.9021250   B
# 5            e    7238       0.9250504   C
# 6            f    6390       0.9452900   C

答案 1 :(得分:0)

与此同时,还有一个专门的R包(http://cran.r-project.org/web/packages/ABCanalysis/index.html)可以完成这项工作。

答案 2 :(得分:-1)

qcc包(http://cran.r-project.org/web/packages/qcc/qcc.pdf)有一个函数pareto.chart,它提供了以表格和图表输出的形式轻松执行ABC分析的方法。