У меня есть условная сумма с сбросом на ноль.Cumsum игнорирует NA с сбросом
criteria1 <- c(rep(0,2), rep(1,5), rep(0,3), rep(1,6),rep(0,2))
criteria1[c(6,9,12,13,14,15)] <- NA
#cumsum function, working before the first NA
ave(criteria1, cumsum(criteria1 == 0), FUN = cumsum)
[1] 0 0 1 1 1 NA 1 0 NA 0 1 NA NA NA NA 1 0 0
#and desired output would be
#NA's are replaced with the last value accumulated
#if more than three leave NA's in
0 0 1 2 3 3 4 0 0 0 1 NA NA NA NA 2 0 0
Некоторые условия:
NA
ы не может быть заменен на ноль (или один),- вектор должен оставаться такой же длины (так, за исключением не вариант)
- длинный длина последовательных игнорируемых
NA
s должна быть три. Если его больше трех, то они должны оставаться какNA
s, и функция должна продолжаться от последнего неNA
.
Некоторые ответы существуют по одной и той же теме, но я не уверен, как собрать все это вместе.
Благодаря
Посмотрите на '' na.locf' из zoo'?. – ytk
, что должно произойти, когда есть 4 последовательных значения 'NA'? – Wietze314
«Самая длинная длина последовательных игнорируемых НС должна быть три». - вы, вероятно, должны расширить свой пример, чтобы это действительно имело значение. – Frank