У меня есть этот вектор
set.seed(234)
x <- sample(c(rep(NA,3),1:5))
x
[1] 3 5 NA 1 4 NA NA 2
Для каждого NA
мне нужен индекс (или значение) последнего предшествующего не NA
значения.То есть для первого NA
последний предыдущий не-NA
имеет индекс 2. Для следующих двух NA
их последний предыдущий не-NA
имеет индекс 5:
[1] NA NA 2 NA NA 5 5 NA
База R
или tidyverse
будет в порядке.Я пробовал комбинации lag
, lead
, rle
, gl
и coalesce
, но все безуспешно.Например, это довольно близко, но все же неправильно.
a <- rle(is.na(x))
rep(1:length(a$lengths), a$lengths)
[1] 1 1 2 3 3 4 4 5