2012-10-01 119 views
1

隨着轉換數據幀到時間序列在30分鐘間隔

x <- data.frame(value = round(rt(20, 2), 2), 
       time = c("2012-09-03 00:00:00", "2012-09-03 00:30:00", 
         "2012-09-03 01:00:00", "2012-09-03 01:30:00", 
         "2012-09-03 02:00:00", "2012-09-03 02:30:00", 
         "2012-09-03 03:00:00", "2012-09-03 03:30:00", 
         "2012-09-03 04:00:00", "2012-09-03 04:30:00", 
         "2012-09-03 05:00:00", "2012-09-03 05:30:00", 
         "2012-09-03 06:00:00", "2012-09-03 06:30:00", 
         "2012-09-03 07:00:00", "2012-09-03 07:30:00", 
         "2012-09-03 08:00:00", "2012-09-03 08:30:00", 
         "2012-09-03 09:00:00", "2012-09-03 09:30:00")) 

有一種方法將其與30分鐘的間隔轉換爲時間序列的格式?如:

  00:00:00 00:30:00 01:00:00 01:30:00 02:00:00 02:30:00 ... 
2012-09-03  0.31 -1.01  0.94 -0.75 -0.40  0.41 

事實上,有一天以上的數據,我只是展示了它的一部分。謝謝!

+0

下面的答案應該適用於多天的數據。如果數據不規則,那麼我可以給你一個不同的解決方案。 – Maiasaura

回答

2
library(plyr) 
library(reshape2) 
x2 <- cbind(x, ldply(strsplit(x$time, " ")))[-2] 
names(x2) <- c("value", "date", "time") 
dcast(x2, date~time) 
+0

謝謝Maiasaura。實際上,我正在尋找的是一個時間序列(ts)對象,而不是流式數據幀。我不知道這是否可能......順便說一句,我得到了'strsplit(x $ time,「」):使用您的代碼的非字符參數'錯誤。 – Rock

+1

它可以很好地處理您提供的名爲'x'的'data.frame'。如果你需要這個來處理ts對象,那麼給我們一個正確的對象的例子。 – Maiasaura

相關問題