2012-10-01 118 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

相关问题