2016-07-05 150 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最後一個條目的每個條目將被賦予201501的值,因爲它們歸因於2015年1月的會計期間。同樣,從2015-01-15到2015-02-16上的每個值都會被賦予201502的值。

我希望能有一個解決方案使用lubridate,因爲我寧願不轉換爲基於xtszoo的對象。性能也有點重要,因爲我將不得不爲數百個這樣的數據集執行此操作。

回答

0

我想出了答案,我沒有意識到cut也適用於POSIXct對象。

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

它的datesPOSIXct對象轉換,否則cut拋出一個錯誤,說他們休息的格式不正確是很重要的。

相關問題