我有一个包含供应商,类别和支出的数据集。我需要对供应商进行pareto分析。但是,此供应商在多个类别中重复出现。例如
SCNBox
以上是数据集。但是我需要根据供应商的总支出来进行比较。如果我采取行动,我将获得供应商D,F,A,E和G作为前80名的支出。所以我需要添加一个看起来像
的列 Supplier Value Category
A 92 asrg
A 411 gdfg
B 160 asrg
C 239 gdfg
D 384 asrg
D 474 gdfg
E 134 asrg
E 344 gdfg
F 483 asrg
F 196 gdfg
G 66 asrg
G 236 gdfg
答案 0 :(得分:0)
d <- read.table(text = " Supplier Value Category
A 92 asrg
A 411 gdfg
B 160 asrg
C 239 gdfg
D 384 asrg
D 474 gdfg
E 134 asrg
E 344 gdfg
F 483 asrg
F 196 gdfg
G 66 asrg
G 236 gdfg", header = TRUE)
d
get_20pct_limit <- function(id, x) {
res <- aggregate(x ~ id, FUN = sum)
res <- setNames(ifelse(quantile(res$x, probs = c(0.2)) > res$x, "Bottom 20", "Top 80"),
res$id)
res
}
d$`Top 80/Bottom 20` <- get_20pct_limit(d$Supplier, d$Value)[d$Supplier]
d
# Supplier Value Category Top 80/Bottom 20
#1 A 92 asrg Top 80
#2 A 411 gdfg Top 80
#3 B 160 asrg Bottom 20
#4 C 239 gdfg Bottom 20
#5 D 384 asrg Top 80
#6 D 474 gdfg Top 80
#7 E 134 asrg Top 80
#8 E 344 gdfg Top 80
#9 F 483 asrg Top 80
#10 F 196 gdfg Top 80
#11 G 66 asrg Top 80
#12 G 236 gdfg Top 80