Длина тренда - данные панели
У меня есть хорошо сбалансированный набор данных панели, который содержит наблюдения 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]
Все решения приветствуются, но решения с данными очень предпочтительны; файл данных большой.