Как рассчитать групповой наклон - PullRequest
0 голосов
/ 07 июля 2019

У меня есть фрейм данных следующих столбцов: Клиент, Месяц, Активный / Неактивный, Общий объем продаж ($).Активно / Неактивно - 1, если продажи> 0 в конкретном месяце, 0 в противном случае.Я хотел бы рассчитать наклон наклона для каждого клиента в зависимости от того, активен он или нет.Например, если в течение января-марта он был активным, а затем неактивным в течение апреля, а затем снова активным в мае-декабре, то в каждой строке до марта будет отображаться наклон его продаж до этого месяца, затем 0 в апреле и затем новый переходнаклон, указывающий на его активность в мае - декабре (игнорируя то, что произошло раньше).

Я понимаю, что это может быть связано с rollapply () или ave (), но это в значительной степени так.Заранее спасибо!

Приведенный пример с ожидаемым результатом

structure(list(X = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 

1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,2L, 2L, 2L), .Label = c («Алекс», «Michael»), класс = «фактор»), Month = структура (c (5L, 4L, 8L, 1L, 9L, 7L, 6L, 2L,12L, 11L, 10L, 3L, 5L, 4L, 8L, 1L, 9L, 7L, 6L, 2L, 12L, 11L, 10L, 3L), .Label = c ("Apr-18", "Aug-18",«18 декабря», «18 февраля», «18 января», «18 июля», «18 июня», «18 марта», «18 мая», «18 ноября», «октябрь»-18 "," Sep-18 "), класс =" фактор "), активность = c (1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,0L, 0L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 1L), Продажи .... = c (12L, 71L, 83L, 0L, 77L, 22L, 32L, 69L, 81L, 98L, 84L, 73L, 24L, 85L, 0L, 0L, 89L, 53L, 66L, 0L, 0L, 35L, 67L, 13L), Expected_Rolling_Slope = c (0, 1,9, 1,22, 0, 0, -1,77, -0,74, -0,05, 0,18, 0,3, 0,26, 0,19, 0,19, 0,11, 0, 0, 0, -1,16, -0,38, 0, 0, 0, 1,03, -0,35)), class = "data.frame", row.names =c (NA, -24L))

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...