Заполните выбранную строку выше и ниже значения индекса - PullRequest
0 голосов
/ 27 января 2019

При работе в R * 1001 возникла проблема * У меня есть переменная (X) во фрейме данных (df), которая выглядит следующим образом

df$X
NA
12345
NA
NA
32409
NA
NA
NA
NA
NA
04598
NA
NA
NA

Мне нужно сделать следующее:

Если X не является NA, замените:
- предыдущая строка в X значением
- заполните оставшиеся строки, пока не будет достигнуто следующее значение

В конечном счете, это необходимочтобы выглядеть так

df$X
12345
12345
12345
32409
32409
32409
32409
32409
32409
04598
04598
04598
04598
04598

Я пытался использовать цикл for для выполнения первой части (заполнение в предыдущей строке), но не могу заставить это работать

for (x in df$X) {

x = df$X[x]  
y = x -1  
df$X[y] <-  ifelse(!is.na(x), x, NA)

}

Ваша помощь очень ценится!

1 Ответ

0 голосов
/ 27 января 2019

Вот подход с dplyr и tidyr:

library(dplyr)
df2 <- df %>%
  mutate(X = if_else(is.na(X), lead(X), X)) %>%
  tidyr::fill(X)
...