У меня есть список многочисленных временных рядов, каждый из которых имеет некоторые недостающие значения. Вот краткий пример:R найдите периоды с отсутствующими значениями из списка временных рядов
x <- list(structure(c(NA, NA, 30, 1260, 504, 24, 132, 60, 766.8, 643.68,
54.96, 0, 9.48, 186.36, NA, NA, NA, NA, 723.24, 426.36, 198.96,
528.72, 29.04, 132, 60, 348, 5.04, 12, 144, 0), index = structure(c(189385200,
189471600, 189558000, 189644400, 189730800, 189817200, 189903600,
189990000, 190076400, 190162800, 190249200, 190335600, 190422000,
190508400, 190594800, 190681200, 190767600, 190854000, 190940400,
191026800, 191113200, 191199600, 191286000, 191372400, 191458800,
191545200, 191631600, 191718000, 191804400, 191890800), class = c("POSIXct",
"POSIXt")), class = "zoo"), structure(c(NA, NA, 144.96, 33.96,
10.08, 20.64, 12, NA, NA, 13.1904, 21.8784, 19.836, 30.8208,
96.3312, 57.3288, 30.0672, 25.9872, NA, NA, NA, NA, 56.3472,
79.4064, 35.64, 25.92, 44.88, 4.872, 78), index = structure(c(189385200,
189471600, 189558000, 189644400, 189730800, 189817200, 189903600,
189990000, 190076400, 190162800, 190249200, 190335600, 190422000,
190508400, 190594800, 190681200, 190767600, 190854000, 190940400,
191026800, 191113200, 191199600, 191286000, 191372400, 191458800,
191545200, 191631600, 191718000), class = c("POSIXct", "POSIXt"
)), class = "zoo"), structure(c(25.8876260869565, 33.931, 12.50435,
19.721225, 17.5955, 10.296775, 6.862425, 5.321225, 10.0137, 14.7752,
11.35255, 7.0339, 5.2703, 4.672575, 3.777625, 3.26115, 2.97095,
NA, NA, NA, NA, NA, NA, 5.469975, 4.29925), index = structure(c(189385200,
189471600, 189558000, 189644400, 189730800, 189817200, 189903600,
189990000, 190076400, 190162800, 190249200, 190335600, 190422000,
190508400, 190594800, 190681200, 190767600, 190854000, 190940400,
191026800, 191113200, 191199600, 191286000, 191372400, 191458800
), class = c("POSIXct", "POSIXt")), class = "zoo"))
Мне нужно найти начало и конец периодов, за которые ни одна из моих временных рядов не содержит недостающие значения. Для приведенного выше примера, я ожидаю, чтобы получить что-то вроде:
START END
1976-01-03 23:00:00 1976-01-07 23:00:00
1976-01-10 23:00:00 1976-01-14 23:00:00
1976-01-24 23:00:00 1976-01-25 23:00:00
Я мог бы написать цикл, который ищет не-NA значения на каждом шаге по времени, а затем записывает временную метку в START колонке (END) продукта в виде dataframe, если предыдущее (следующее) значение равно NA.
Интересно, существует ли какая-либо существующая функция, которая уже делает это (возможно, быстрее, чем обычный цикл)?
Большое спасибо за ваш ответ. Однако я надеялся, что в качестве вывода будет 1 таблица, которая может суммировать периоды без пропущенных значений * в общем * среди разных временных рядов. – Claudia