Исходные данные:
df <- tibble(Customer = letters[1:10], Revenue = c(230, 170, 809, 435, 678, 350, 465, 990, 767, 500))
library(dplyr)
library(ggplot2)
Упорядочить data.frame по возрастанию Выручка
df <- df %>%
arrange(Revenue)
Используйте функцию cut () из базы R, чтобы добавить переменную, отображающую в каком изв 5 бункерах находится совокупный доход.Затем построите график, используя ось x для бинов и ось y для количества значений для этой категориальной переменной.
df %>%
mutate(Revenue_Cumulated = cumsum(Revenue)/sum(Revenue)) %>%
mutate(bins = cut(Revenue_Cumulated, breaks = seq(0, 1, 0.2))) %>%
group_by(bins) %>%
summarise(n = n()) %>%
mutate(cumulated_n = cumsum(n)) %>%
# data.frame at that point in the code:
# A tibble: 5 x 3
# bins n cumulated_n
# <fct> <int> <int>
# 1 (0,0.2] 3 3
# 2 (0.2,0.4] 3 6
# 3 (0.4,0.6] 1 7
# 4 (0.6,0.8] 1 8
# 5 (0.8,1] 2 10
gather(key, value, -bins) %>%
ggplot(aes(x = bins, y = value, fill = key)) +
geom_col(position = "dodge")+
geom_text(aes(label=value),position=position_dodge(width=0.9),vjust=-0.25)
Теперь cumulated_n сообщит, сколько клиентов вносят вклад в 0-X процентов.Функция сбора предназначена для преобразования данных в более длинный формат, что упрощает обработку «n» и «cumulated_n» как факторов, подчеркивающих разницу в графике.
Number_customers_by_bin