У меня есть вектор двоичных переменных, в которых указано, является ли товар продвигаемым в период. Я пытаюсь выяснить, как рассчитать продолжительность каждой акции и продолжительность между рекламными акциями.Текущая сумма на столбце, соответствующем значению
promo.flag = c(1,1,0,1,0,0,1,1,1,0,1,1,0))
Итак, другими словами: если promo.flag
такой же, как предыдущий период то running.total + 1
, иначе running.total
сбрасывается на 1
Я пытался играть с применять функции и cumsum, но не удается получить условный сброс работает всего рабочих :-(
Выход мне нужно:
promo.flag = c(1,1,0,1,0,0,1,1,1,0,1,1,0)
rolling.sum = c(1,2,1,1,1,2,1,2,3,1,1,2,0)
Может кто-нибудь пролить свет на то, как достичь этого в R?
Большое спасибо, это исправлено и дано мне дополнительные функции для изучения! Отличный, быстрый ответ! –
Нет проблем. Как оказалось, я просто нашел применение для этой самой функции :-). Также взгляните на семейство функций 'rollapply' в библиотеке' zoo', которые являются более мощными, но по цене фиксированного размера окна (возможно, есть способ его изменить, я не очень хорошо знаком с ними). –
P.S. Добро пожаловать в переполнение стека! Мы надеемся, что вы будете придерживаться тега [r]. –