Wie kann ich ein Datum auf den Beginn / das Ende des Quartals runden?

Ich muss einen Vektor von Daten nehmen und für jedes Datum den ersten Tag des nächsten Quartals erhalten.

(Oder besser gesagt, um auf den letzten Tag des aktuellen Quartals zu runden, den ersten Tag des nächsten Quartals zu finden und auszuziehen, ist mein Plan.)

lubridate Rundung / Decke auf Monate, aber nicht auf Viertel

Die einzige Lösung, die ich bisher gefunden habe, besteht darin, eine Vektorauflistung zu erstellen, die alle Vierteljahreszeiträume von 1970 bis 2099 auflistet, und diese dann zu durchsuchen, um das Mindestdatum nach meinem Datum zu finden. Dies vektorisiert und skaliert eindeutig schlecht.

Ich muss in der Lage sein, das Monatsende anzugeben (obwohl das Jahr immer am 1. des Monats beginnt)

Z.B.

x = as.Date("2014-08-15")
RoundToQuarterStart(x, yearStarts = "March")
[1] "2014-09-01"

Da das Jahr in diesem Beispiel am 1. März beginnt, beginnt das dritte Quartal am 1. September, dem Beginn des nächsten Quartals nach dem angegebenen Datum. (oder gleichwertig gehört dieses Datum zum zweiten Quartal, das am 31. August endet)

Antworten auf die Frage(3)

Ihre Antwort auf die Frage