我正在寻找使用 R 来运行 ABC 分析,也称为帕累托分析。ABC 分析是一个商业术语,用于定义材料管理中常用的分类技术。
每个类别没有固定的阈值,可以根据目标和标准应用不同的比例。ABC 分析类似于帕累托原则,因为“A”项通常占总价值的很大一部分,但占项目数量的一小部分。
我正在寻找使用 R 来运行 ABC 分析,也称为帕累托分析。ABC 分析是一个商业术语,用于定义材料管理中常用的分类技术。
每个类别没有固定的阈值,可以根据目标和标准应用不同的比例。ABC 分析类似于帕累托原则,因为“A”项通常占总价值的很大一部分,但占项目数量的一小部分。
说真的,我认为这个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
与此同时,有一个专门的 R 包 ( http://cran.r-project.org/web/packages/ABCanalysis/index.html ) 可以完成这项工作。
qcc 包(http://cran.r-project.org/web/packages/qcc/qcc.pdf)有一个函数 pareto.chart,它提供了以表格和图表输出的形式轻松执行 ABC 分析的方法。