Frage Plotten von temporären TS und Weglassen von NA-Daten


Ich versuche einige Zeitdaten zu zeichnen, die Lücken aufweisen. Sie können die Handlung hier sehen: http://www.tioniki.com/tis/view/?id=da222e2.
Das Problem ist, dass während der Zeitlücken im TS der Liniendiagramm über die Lücke interpoliert wird und ich nicht will. Ich habe versucht, die Lücken mit einem NA-Flag zu verschachteln, aber es sind etwa 10000 Datenpunkte aus mehreren Dateien sortiert, was es schwierig macht, das NA-Flag manuell hinzuzufügen. Wenn es nicht möglich ist, das Verhalten des Diagramms zu definieren (Funktion 0, gibt es eine andere Grafik, die ich verwenden kann, z. B. Zoo, die es mir erlaubt, die Linien nicht zwischen den Lücken zu ziehen?


5
2018-02-24 12:37


Ursprung


Antworten:


Es ist nicht schwierig, die Lücken mit NA zu verschachteln, wenn Sie die Reihenfolge Ihrer Zeitreihen kennen. Eine kleine Demonstration:

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")

3
2018-02-24 13:26



Erstellen Sie eine Zoo-Serie mit einer Lücke. Dann definieren g Dazu gehören die Zeitpunkte von z plus die fehlenden Punkte. Erstellen Sie eine Zoo-Serie mit null Breite, mit der Sie verschmelzen möchten z und Handlung.

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)

2
2018-02-24 13:30



Danke an alle, die zu meiner Anfrage beigetragen haben.

Ich habe diese Frage auch in die R-Hilfe-Mail-Liste geschrieben, und von dort wurde mir eine Prozedur beantwortet, die beim Ausfüllen der fehlenden Datenpunkte mit einer NA-Flagge funktionierte. Das Problem war, dass die Zeitstempel unregelmäßig verteilt waren, aber immer noch innerhalb gewisser Schwellen lagen.

Für die Nachwelt ist dies der Vorschlag von Duncan Murdoch:

Jede Software wird das gleiche Problem haben, das Sie hatten: Wie geht es Ihnen?   eine Lücke definieren? Wenn die Definition etwas Einfaches wie "Zeit" ist   Unterschied größer als X ", dann wird es ziemlich einfach sein: Verwenden Sie diff ()   um die Zeitunterschiede in den sortierten Zeiten und wo auch immer zu finden   diese überschreiten X, fügen Sie einen neuen Datenpunkt mit einem NA-Wert ein. Zum   Beispiel:

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')

1
2018-02-25 16:29