2016-06-26 28 views
1

私は、Rの時系列データを持っています。ここでは、特定の日付までのすべての値の平均を計算し、その平均を+ 4四半期に保存しています。日付はすべて月末です。これを達成するために、私は日付に4分の3を増やすことを検討しています。私の質問は、どのように4つの四半期をRの日付データ型に追加できるかです。例:Rの日付に四半期を追加する

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 

私が考えている可能性のある方法は、年四半期の日付を取得し、それに4を追加することです。しかし、これを行うための最善の方法は何か分かりませんでしたか?

+1

時系列のような '.25'表記を使用する方が簡単でしょう。 'time(ts(NA、start = 2006、end = 2011、frequency = 4))' – alistaire

答えて

1

代わりに12か月を追加してください。

それともそれはそうと同じように、自分で関数を定義、四半期でなければならない場合:

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

し、その後、日付順に追加するためにそれを使用する:

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

問題は宿舎が持っているということです異なる長さ。 Q1は2月を含んでいるので最短です(それはうるう年でQ2と結びついていますが)。このようなことにより、は「日付に四分の一を追加」が不十分になりました。 1ヶ月を1ヶ月後に追加することも難しくなります。

月の始まりは簡単です。特定の日付を使用する必要がある場合は、最後の日ではなく最初の日を使用することをおすすめします。 lubridateは、floor_date()ceiling_date()のような関数を提供します。この関数には、unit = "quarter"を渡すことができ、それぞれ現在の四半期または次の四半期の最初の日を返します。 を1日にに追加することもできます。もちろん、4分の3を追加することもできますが、1年追加することもできます。

関連する問題