условное вложение пропущенного значения - PullRequest
1 голос
/ 24 мая 2019

Как вы вменяете пропущенные значения, только если это 2 или менее последовательных пропущенных значения и оставляете другие пропущенные значения как NA, используя na.locf в R? Например.,

x<-c(2,1,NA,4,4,NA,NA,NA)

Вывод должен быть как

2,1,1,4,4,NA,NA,NA

Первый NA вменяется предыдущим доступным «1», а последние 3 NA не должны вменяться.

Ответы [ 2 ]

5 голосов
/ 24 мая 2019

na.locf из zoo имеет аргумент 'maxgap', поэтому вы можете просто сделать:

library(zoo)

na.locf(x, maxgap = 2, na.rm = FALSE)
[1]  2  1  1  4  4 NA NA NA
0 голосов
/ 24 мая 2019

Мы можем использовать rleid из data.table для создания групп, использовать ave для подсчета length каждой группы и использовать na.locf только когда значение равно NA и length группы меньше чем равно 2.

library(data.table)
library(zoo)

ifelse(ave(x, rleid(x), FUN = length) <= 2 & is.na(x), na.locf(x), x)
#[1]  2  1  1  4  4 NA NA NA
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...