Построение временной TS и пропуск данных NA - PullRequest
5 голосов
/ 24 февраля 2011

Я пытаюсь построить некоторые временные данные, в которых есть пробелы.Вы можете увидеть график здесь: http://www.tiikoni.com/tis/view/?id=da222e2.
Проблема в том, что в течение промежутков времени в TS линейный график интерполируется по промежутку, а я этого не хочу.Я попытался чередовать пропуски с флагом NA, но существует около 10000 точек данных, отсортированных по нескольким файлам, что затрудняет добавление флага NA вручную.Если невозможно определить поведение графика (функция 0, есть ли другой график, который я могу использовать, например, зоопарк), который позволит мне не проводить линии между пропусками?

Ответы [ 3 ]

3 голосов
/ 24 февраля 2011

Нетрудно чередовать разрывы с NA, используя слияние, если вы знаете последовательность своих временных рядов. Небольшая демонстрация:

X <- c(1:20,41:100)
Y <- rnorm(80)

plot(X,Y,type="l")    

Z <- seq(min(X),max(X),by=1)    # I take 1 is the period.
newData <- merge(data.frame(X,Y),data.frame(X=Z),all=T)
plot(newData,type="l")
2 голосов
/ 24 февраля 2011

Создание зоопарка с зазором. Затем определите g, который включает в себя временные точки z плюс недостающие точки. Создайте серию зоопарков нулевой ширины, чтобы объединить ее с z и построить график.

library(zoo)
z <- zoo(rnorm(12), c(1:6, 11:16)) # test data

g <- seq(start(z), end(z), 1)
zz <- merge(z, zoo(, g))
plot(zz)
1 голос
/ 25 февраля 2011

Спасибо всем, кто внес свой вклад в мой запрос.

Я также разместил этот вопрос в списке рассылки R-help, и оттуда мне ответили с помощью процедуры, которая работала при заполнении пропущенных точек данных флагом NA. Проблема заключалась в том, что метки времени были расположены нерегулярно, но все еще в определенных пределах.

Для потомков это предложение Дункана Мердока:

Любое программное обеспечение будет иметь ту же проблему, что и у вас: как вы определить разрыв? Если определение что-то простое, как «время разница больше, чем X ", тогда это будет довольно просто: используйте diff () чтобы найти все различия во времени в отсортированном времени, и везде превышающие X, вставьте новую точку данных со значением NA. За Пример:

t <- c(1,2,3,7,8,9,11,12,13)
x <- rnorm(length(T))
d <- diff(t)
gap <- which(d > 1.5)
if (length(gap)) {
   newT <- (t[gap] + t[gap+1])/2
   t <- c(t, newT)
   x <- c(x, rep(NA, length(newT)))
   o <- order(t)
   t <- t[o]
   x <- x[o]
}
plot(t, x, type='l')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...