У меня есть датчик, который измеряет переменную, и когда нет связи, он всегда возвращает последнее увиденное значение вместо NA
. Поэтому в моем векторе я хотел бы заменить эти идентичные значения импутированным значением (например, na.approx
).
set.seed(3)
vec <- round(runif(20)*10)
#### [1] 2 8 4 3 6 6 1 3 6 6 5 5 5 6 9 8 1 7 9 3
Но мне нужны только последовательности больше 2 (3 или более одинаковых чисел), потому что 2 одинаковых числа могут появиться естественным образом. (в предыдущем примере последовательность тегов будет 5 5 5
)
Я попытался сделать это с помощью diff
, чтобы пометить свои идентичные точки (c(0, diff(vec) == 0)
), но я не знаю, как справиться с условием length == 2
...
ИЗМЕНИТЬ мой ожидаемый результат может быть таким:
#### [1] 2 8 4 3 6 6 1 3 6 6 5 NA NA 6 9 8 1 7 9 3
(Второе идентичное значение последовательности из 3 или более, скорее всего, тоже неверное значение)
Спасибо