Справочная информация
Предположим, что теперь мы работаем на основе подписки (что мы и делаем).Когда клиент подписывается на наш продукт, у него есть много вариантов для настройки.Для целей этого упражнения мы будем предполагать следующее:
● Когда пользователь зарегистрируется, для него будет создана запись в таблице «Заказы».
○ Это будетсамая первая запись в Заказах для этого user_id
○ Первой датой в таблице «Заказы» будет дата регистрации пользователя.
● Первый заказ пользователя отправляет ту же дату, что и он.
● Пользователи могут изменить частоту доставки в любое время и даже запросить доставку дополнительных ящиков.
○ Для этого задания мы не будем беспокоиться о частоте доставки;Главным образом потому, что данные в этом примере генерируются случайным образом, а частота импульсов, наблюдаемая в этом наборе данных, не соответствует естественной логике;)
● Если или когда пользователь отменяет, они остаются «активными» в течение 14-дневного периода (включительно).) после их последнего заказа в таблице заказов.● Пользователь считается «активным» во все дни между его первым и последним заказом.
○ Для этого задания мы не будем заниматься изучением «реактивации»;то есть с пользователями, которые отменили, а затем зарегистрировались в будущем.Для простоты этого упражнения мы рассмотрим тех пользователей, которые никогда не отменяли.
Определения
● определим группу пользователей как группу пользователей, которые впервые сталиактивный в тот же период.
● определить коэффициент удержания для периода для данной когорты как отношение: N / D, где N = количество пользователей в когорте, которые были активны в этот период и также были активными в последний разпериод D = количество пользователей в группе, которые были активны в последний период
● определить период как календарный месяц или календарную неделю, начиная с воскресенья, в соответствии с тем, что указано в вопросе.
Вопросы
создать таблицу со столбцами:
date |count_new |count_active
count_new: сколько новых пользователей регистрировалось каждую неделю?
count_active: Сколько активных пользователей было там каждую неделю?
часть данных:
id user_id total date payment_status
1 1 1 12783 2017-01-01 paid
2 258 1 12783 2017-01-22 paid
3 1072 1 12783 2017-02-26 paid
4 2086 1 12783 2017-03-26 paid
5 2387 1 12783 2017-04-02 paid
6 3860 1 12783 2017-04-30 paid
7 5546 1 12783 2017-05-28 paid
8 2 2 9516 2017-01-01 paid
9 68 2 9516 2017-01-08 paid
10 3 3 14536 2017-01-01 paid
11 372 3 14536 2017-01-29 paid
12 879 3 14536 2017-02-19 paid
13 1796 3 14536 2017-03-19 paid
14 3451 3 14536 2017-04-23 paid
15 4651 3 14536 2017-05-14 paid
16 5547 3 14536 2017-05-28 paid
17 6920 3 14536 2017-06-18 paid
18 7385 3 14536 2017-06-25 paid
19 10024 3 14536 2017-07-30 unpaid
20 11581 3 14536 2017-07-30 unpaid
21 13138 3 14536 2017-07-30 unpaid
22 14695 3 14536 2017-07-30 unpaid
23 4 4 5755 2017-01-01 paid
24 497 4 5755 2017-02-05 paid
25 1285 4 5755 2017-03-05 paid
26 2699 4 5755 2017-04-09 paid
27 3057 4 5755 2017-04-16 paid
28 5 5 10102 2017-01-01 paid
29 498 5 10102 2017-02-05 paid
30 1529 5 10102 2017-03-12 paid
31 2087 5 10102 2017-03-26 paid
32 2388 5 10102 2017-04-02 paid
33 6 6 13552 2017-01-01 paid
34 69 6 13552 2017-01-08 paid
structure(list(id = 1:100, user_id = c(1L, 2L, 3L, 4L, 5L, 6L,
7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L, 15L, 16L, 17L, 18L, 19L,
20L, 21L, 22L, 23L, 24L, 25L, 26L, 27L, 28L, 29L, 30L, 31L, 32L,
33L, 34L, 35L, 36L, 37L, 38L, 39L, 40L, 41L, 42L, 43L, 44L, 45L,
46L, 47L, 48L, 49L, 50L, 51L, 52L, 53L, 54L, 55L, 56L, 57L, 58L,
59L, 60L, 61L, 62L, 63L, 64L, 65L, 66L, 67L, 2L, 6L, 10L, 12L,
17L, 21L, 27L, 29L, 36L, 37L, 40L, 49L, 55L, 59L, 61L, 67L, 68L,
69L, 70L, 71L, 72L, 73L, 74L, 75L, 76L, 77L, 78L, 79L, 80L, 81L,
82L, 83L, 84L), total = c(12783L, 9516L, 14536L, 5755L, 10102L,
13552L, 6940L, 12154L, 14639L, 8034L, 10912L, 12255L, 8016L,
6483L, 9841L, 14813L, 10934L, 5194L, 7753L, 5544L, 13813L, 9739L,
13630L, 5281L, 10607L, 14873L, 13441L, 12998L, 10162L, 8110L,
8269L, 9118L, 12308L, 14144L, 5789L, 7364L, 11921L, 5276L, 11695L,
6669L, 7872L, 12890L, 7636L, 11682L, 14620L, 10876L, 12273L,
14560L, 6787L, 13150L, 5559L, 13086L, 6957L, 6862L, 12442L, 10948L,
12293L, 8398L, 8796L, 14986L, 6235L, 12077L, 5013L, 11953L, 7891L,
13551L, 14988L, 9516L, 13552L, 8034L, 12255L, 10934L, 13813L,
13441L, 10162L, 7364L, 11921L, 6669L, 6787L, 12442L, 8796L, 6235L,
14988L, 10769L, 10875L, 10603L, 12522L, 5475L, 9343L, 6860L,
11969L, 7392L, 9487L, 13016L, 6284L, 9801L, 6581L, 9164L, 11898L,
9210L), date = structure(c(17167, 17167, 17167, 17167, 17167,
17167, 17167, 17167, 17167, 17167, 17167, 17167, 17167, 17167,
17167, 17167, 17167, 17167, 17167, 17167, 17167, 17167, 17167,
17167, 17167, 17167, 17167, 17167, 17167, 17167, 17167, 17167,
17167, 17167, 17167, 17167, 17167, 17167, 17167, 17167, 17167,
17167, 17167, 17167, 17167, 17167, 17167, 17167, 17167, 17167,
17167, 17167, 17167, 17167, 17167, 17167, 17167, 17167, 17167,
17167, 17167, 17167, 17167, 17167, 17167, 17167, 17167, 17174,
17174, 17174, 17174, 17174, 17174, 17174, 17174, 17174, 17174,
17174, 17174, 17174, 17174, 17174, 17174, 17174, 17174, 17174,
17174, 17174, 17174, 17174, 17174, 17174, 17174, 17174, 17174,
17174, 17174, 17174, 17174, 17174), class = "Date"), payment_status = c("paid",
"paid", "paid", "paid", "paid", "paid", "paid", "paid", "paid",
"paid", "paid", "paid", "paid", "paid", "paid", "paid", "paid",
"paid", "paid", "paid", "paid", "paid", "paid", "paid", "paid",
"paid", "paid", "paid", "paid", "paid", "paid", "paid", "paid",
"paid", "paid", "paid", "paid", "paid", "paid", "paid", "paid",
"paid", "paid", "paid", "paid", "paid", "paid", "paid", "paid",
"paid", "paid", "paid", "paid", "paid", "paid", "paid", "paid",
"paid", "paid", "paid", "paid", "paid", "paid", "paid", "paid",
"paid", "paid", "paid", "paid", "paid", "paid", "paid", "paid",
"paid", "paid", "paid", "paid", "paid", "paid", "paid", "paid",
"paid", "paid", "paid", "paid", "paid", "paid", "paid", "paid",
"paid", "paid", "paid", "paid", "paid", "paid", "paid", "paid",
"paid", "paid", "paid")), row.names = c(NA, 100L), class = "data.frame")