Длина тренда - данные панели

У меня есть хорошо сбалансированный набор данных панели, который содержит наблюдения NA. Я буду использовать LOCF и хотел бы знать, сколько последовательных NA в каждой панели, прежде чем продолжить наблюдения. LOCF - это процедура, при которой пропущенные значения могут быть «заполнены» с использованием «последнего перенесенного наблюдения». Это может иметь смысл в некоторых приложениях временного ряда; возможно, у нас есть данные о погоде с шагом 5 минут: хорошим предположением о значении отсутствующего наблюдения может быть наблюдение, сделанное за 5 минут до этого.

Очевидно, что более целесообразно переносить наблюдение на один час вперед в пределах одной панели, чем переносить то же самое наблюдение на следующий год в той же панели.

Я знаю, что вы можете установить аргумент "maxgap", используя zoo :: na.locf, однако я хочу лучше понять мои данные. Пожалуйста, посмотрите простой пример:

require(data.table)
set.seed(12345)

### Create a "panel" data set
data <- data.table(id = rep(1:10, each = 10),
                   date = seq(as.POSIXct('2012-01-01'),
                              as.POSIXct('2012-01-10'),
                              by = '1 day'),
                   x  = runif(100))

### Randomly assign NA's to our "x" variable
na <- sample(1:100, size = 52)
data[na, x := NA]

### Calculate the max number of consecutive NA's by group...this is what I want:
### ID       Consecutive NA's
  #  1       1
  #  2       3
  #  3       3
  #  4       3
  #  5       4
  #  6       5
  #  ...
  #  10      2

### Count the total number of NA's by group...this is as far as I get:
data[is.na(x), .N, by = id]

Все решения приветствуются, но решения с данными очень предпочтительны; файл данных большой.

Ответы на вопрос(2)

Ваш ответ на вопрос