【发布时间】:2018-02-22 19:30:05
【问题描述】:
我有一个数据框,它的销售额为 ppg 产品级别,我想知道有多少产品对销售的特定百分比(例如 75%)有贡献,例如测试帕累托原理。
数据是
df= structure(list(Ppg = structure(c(1L, 1L, 1L, 1L, 2L, 2L, 2L), .Label = c("p1",
"p2"), class = "factor"), product = structure(c(1L, 2L, 3L, 4L,
1L, 2L, 3L), .Label = c("A", "B", "C", "D"), class = "factor"),
sales = c(50, 40, 30, 80, 100, 70, 30)), .Names = c("Ppg",
"product", "sales"), row.names = c(NA, -7L), class = "data.frame")
> df
Ppg product sales
1 p1 A 50
2 p1 B 40
3 p1 C 30
4 p1 D 80
5 p2 A 100
6 p2 B 70
7 p2 C 30
我使用 dplyr 检索了累积总和
df %>% group_by(Ppg) %>% summarise(sale = sum(sales) %>% mutate(c1 = cumsum(sales))
Ppg product sales c1
<fctr> <fctr> <dbl> <dbl>
1 p1 A 50 50
2 p1 B 40 90
3 p1 C 30 120
4 p1 D 80 200
5 p2 A 100 100
6 p2 B 70 170
7 p2 C 30 200
有什么办法
i) 计算销售额比例(基于 cumsum)
ii) 有多少不同的产品对特定百分比的销售额做出了贡献。
ppg p1 的示例,2 种不同的产品(A 和 B 组合占销售额的 75%)
所以最后像下面这样的东西是理想的
ppg Number_Products_towards_75%
p1 2
p2 1
【问题讨论】:
-
这个问题的答案取决于产品的顺序,对吧?您可以使用它们给出的顺序吗?
-
@Jonathan ,是的,没错,我会在找到cumsum之前安排它
标签: r dplyr summary cumulative-sum