Замените NA на следующий номер, который появляется - PullRequest
0 голосов
/ 02 января 2019

Для данных, показанных ниже, мне нужно заменить NA в столбце «вопрос» следующим появившимся числом. Например, время 1544890711782 будет вопросом 1, а время 1544890722157 будет вопросом 2.

Данные :

structure(list(participant = c("x", "x", "x", "x", "x", "x", 
"x", "x", "x", "x", "x"), time = c(1544890711782, 1544890711809, 
1544890711834, 1544890711862, 1544890711887, 1544890711899, 1544890722157, 
1544890722182, 1544890722210, 1544890722236, 1544890722245), question = c(NA, NA, NA, NA, NA, 1L, NA, NA, NA, NA, 2L)), row.names = c(8470L, 8471L, 8472L, 8473L, 8474L, 27150L, 8852L, 8853L, 8854L, 8855L, 
27134L), class = "data.frame")

enter image description here

1 Ответ

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

Использование na.locf из пакета zoo: (при условии, что вы храните свой фрейм данных в объекте с именем «data»)

library(zoo)
data$question <- na.locf(data$question, fromLast = TRUE, na.rm = FALSE)

(fromLast установлено в T: поэтому мы смотрим на первое непропущенное значение; na.rm установлено в F: таким образом, конечные NA не отбрасываются)

Выход:

      participant         time question
8470            x 1.544891e+12        1
8471            x 1.544891e+12        1
8472            x 1.544891e+12        1
8473            x 1.544891e+12        1
8474            x 1.544891e+12        1
27150           x 1.544891e+12        1
8852            x 1.544891e+12        2
8853            x 1.544891e+12        2
8854            x 1.544891e+12        2
8855            x 1.544891e+12        2
27134           x 1.544891e+12        2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...