Как построить условную скользящую среднюю за 3 недели до состояния? - PullRequest
0 голосов
/ 02 апреля 2020

У меня есть следующий образец df, состоящий из категории ( Кошка ), в которой показаны различные товары (Пицца или Паста) вместе с их продажами данные для разных календарных недель ( CW ). Через несколько недель продвижение , что приводит к увеличению продаж go. 6 самых больших значений продаж помечены как такие рекламные акции.

# example df
set.seed(99999)

df <- data.frame(Cat = rep(c("A","B"),52),
                 Article = rep(c("Pizza","Pasta"),52))
df <- df[order(df$Cat),]
df$CW <- rep(1:52,2)
df$sales <- abs(2+rnorm(104))
df$promotion <- ifelse(rank(df$sales,ties.method=c("last"))>98,1,0)

Теперь задача состоит в том, чтобы вычислить «базовый уровень», по которому можно судить о рекламной акции . Базовая линия должна соответствовать следующим требованиям:

  • для каждой статьи и категории, за три недели до продвижения необходимо рассчитать как базовую линию
  • , базовая линия должна быть «работающей», т. е. должна быть базовая линия для каждой календарной недели
  • в течение трех предыдущих недель для базовой линии, не должно быть продвижения по службе. Если это так, эта конкретная неделя игнорируется, а более предыдущая берется до тех пор, пока не будет найдена неделя без повышения по службе и не пройдут три недели. Если это невозможно, например, CW 1-3, то берется следующее базовое значение в будущем

. Я пытался решить эту проблему, используя существующие сообщения в stackoverflow , но с нет успеха Поэтому я прошу помощи.

...