У меня есть условная сумма со сбросом в ноль.
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
s нельзя заменить нулем (или единицей),- вектор должен оставаться той же длины (поэтому исключение не вариант)
- самая длинная длина последовательных игнорируемых
NA
должна быть равна трем. Если их больше трех, то они должны оставаться какNA
s и функция должна продолжаться с последнего неNA
.
Некоторые ответы существуют по той же теме, но я не знаю, как собрать все вместе.
Спасибо.
?na.locf
изzoo
. - person ytk   schedule 09.02.2017NA
? - person Wietze314   schedule 09.02.2017