2016-06-26 19 views
1

Ich habe eine R-Zeitreihendaten, wo ich die Mittelwerte für alle Werte bis zu einem bestimmten Datum berechnen, und die Speicherung bedeutet in dem Datum + 4 Viertel. Die Daten sind alle Monatsenden. Um dies zu erreichen, möchte ich 4 Quartale auf ein Datum erhöhen. Meine Frage ist, wie kann ich 4 Quartalen zu einem R-Datum-Datentyp hinzufügen. Eine Abbildung:Hinzufügen von Vierteln zu R-Datum

a <- as.Date("2006-01-01") 
b <- as.Date("2011-01-01") 
date_range <- quarter(seq.Date(a, b, by = "quarter"), with_year = TRUE) 

> date_range[1] + 1 
[1] 2007.1 

> date_range[1] + quarter(1) 
[1] 2007.1 

> date_range[1] + 0.25 
[1] 2006.35 

Ein möglicher Weg, ich denke ich ist ganz Quartal Daten zu erhalten, und 4, um es dann hinzuzufügen. Aber war nicht sicher, was der beste Weg ist, dies zu tun?

+1

Es ist wahrscheinlich einfacher, '.25' Notation wie Zeitreihen tun, z. 'Zeit (ts (NA, Start = 2006, Ende = 2011, Häufigkeit = 4))' – alistaire

Antwort

1

Fügen Sie stattdessen 12 Monate oder ein Jahr hinzu?

Oder wenn es Viertel sein müssen, definieren Sie sich eine Funktion, etwa so:

quarters <- function(x) { 
    months(3*x) 
} 

und es dann zu dem Zeitpunkt Sequenz hinzuzufügen verwenden:

date_range <- seq.Date(a, b, by = "quarter") 
date_range + quarters(4) 
1

Das Problem ist, dass Viertel haben verschiedene Längen. Q1 ist am kürzesten, da es Februar enthält (obwohl es in Schaltjahren mit Q2 verknüpft ist). Dinge wie diese machen "Hinzufügen eines Quartals zu einem Datum" schlecht definiert. Das Hinzufügen von Monaten zu einem Datum kann in den Endmonaten schwierig sein - was ist 1 Monat nach dem 31. Januar?

Anfang der Monate sind einfacher, und ich würde Ihnen empfehlen, den ersten Tag der Quartale statt der letzten zu verwenden (wenn Sie ein bestimmtes Datum verwenden müssen). lubridate bietet Funktionen wie floor_date() und ceiling_date(), die Sie unit = "quarter" übergeben können und sie werden jeweils den ersten Tag des aktuellen oder folgenden Quartals zurückgeben. Sie können auch immer months(3) zu einem Tag an der Anfang eines Monats hinzufügen, obwohl natürlich, wenn Sie beabsichtigen, 4 Viertel hinzuzufügen, Sie auch nur 1 Jahr hinzufügen können.