2016-07-05 5 views
0

私は次のようにdata.frameありますRで任意の日付で時系列データをグループ化するにはどうすればよいですか?

df <- data.frame(
    DateTime = seq(ISOdate(2015, 1, 1, 0), by = 15 * 60, length.out = 35040), 
    kWh = abs(rnorm(35040, mean = 550, sd = 50)) 
) 

をとのようなベクトル:私は何をしたいか

dates <- as.Date(c("2015-01-15", "2015-02-17", "2015-03-14", "2015-04-16", 
        "2015-05-16", "2015-06-18", "2015-07-15", "2015-08-15", 
        "2015-09-16", "2015-10-13", "2015-11-17", "2015-12-17")) 

は、どのような会計期間に各エントリを示しているdfに列を追加することですに起因する。たとえば、データの先頭から2015-01-14の最後のエントリまでの各エントリは、2015年1月の会計期間に起因するため、201501の値が与えられます。再び、2015-01-15から2015-02-16の最終値までのすべての値には201502の値が与えられます。

lubridateを使用して解決策があることを望んでいました。 xtsまたはzooベースのオブジェクトに変換します。私はこのような数百のデータセットに対してこれを行う必要があるので、パフォーマンスもやや重要です。

答えて

0

私は答えを見つけた、私は実現しなかったcutPOSIXctのオブジェクトでも動作します。

df$Period <- cut(df$DateTime, breaks = as.POSIXct(dates), 
       labels = 201502:201512) 

そうcutは、彼らブレークが正しくフォーマットされていないというエラーがスローされますので、それはdatesPOSIXctにオブジェクトを変換することが重要です。

関連する問題