У меня есть векторы, в основном NA
записей. Я хочу заменить каждую NA
предыдущей записью этого вектора, не являющейся NA
. В частности, первая запись всегда будет 1, за которой следует набор NA
с, который я хочу заменить на 1. Запись i
может быть другой цифрой, скажем, 2, за которой следует еще NA
s, которые я хочу заменить на 2. И так далее. Цикл ниже достигает этого, но должен быть более R способ сделать это, верно? Я хотел векторизовать с ifelse()
, но я не мог понять, как заменить i
th запись на i-1
th запись.
> vec <- rep(NA, 10)
> vec
[1] NA NA NA NA NA NA NA NA NA NA
> vec[1] <- 1; vec[4] <- 2; vec[7] <- 3
> vec
[1] 1 NA NA 2 NA NA 3 NA NA NA
> for (i in 1:length(vec)) if (is.na(vec[i])) vec[i] <- vec[i-1]
> vec
[1] 1 1 1 2 2 2 3 3 3 3
Спасибо!
Если контекст помогает, я корректирую разделение запасов из базы данных WRDS, в которой есть столбец, показывающий, когда и как происходит разделение.