Ich habe eine Zeitreihe und möchte sie unter Beibehaltung von Anfang, Ende und Häufigkeit als Zeitreihe unterteilen.
Angenommen, ich habe eine Zeitreihe:
> qs <- ts(101:110, start=c(2009, 2), frequency=4)
> qs
Qtr1 Qtr2 Qtr3 Qtr4
2009 101 102 103
2010 104 105 106 107
2011 108 109 110
Jetzt werde ich es unterteilen:
> qs[time(qs) >= 2010 & time(qs) < 2011]
[1] 104 105 106 107
Beachten Sie, dass ich die richtigen Ergebnisse erhalten habe, aber die "Umhüllungen" aus der Zeitreihe (nämlich Anfang, Ende, Häufigkeit) verloren habe.
Ich suche dafür eine Funktion. Ist das Untergruppieren einer Zeitreihe nicht ein häufiges Szenario? Da ich noch keine gefunden habe, habe ich hier eine Funktion geschrieben:
subset.ts <- function(data, start, end) {
ks <- which(time(data) >= start & time(data) < end)
vec <- data[ks]
ts(vec, start=start(data) + c(0, ks[1] - 1), frequency=frequency(data))
}
Ich würde gerne etwas über Verbesserungen oder sauberere Methoden erfahren. Insbesondere mag ich es nicht, wie ich Start und Ende fest programmiere. Ich möchte lieber, dass der Benutzer eine beliebige boolesche Bedingung angibt.
quelle
Auch nützlich, wenn Sie mehrere Zeitreihen kombinieren und wollen nicht zu haben haben ,
window
jeden zu ihnen passen zu bekommen,ts.union
undts.intersect
.quelle