假设在R中,我有一个data.frame,第一列代表时间(如POSIXct)。其余列(例如,第2列)是数字数据。如何快速将数据帧中的时间列分组为间隔?
我想将时间分成3分钟的时间间隔。每个区间将是落入该特定区间的值的平均值。
现在,我有一个循环遍历时间列并生成间隔。我想知道是否有更完美的方式来完成同样的事情?
在此先感谢。
德里克
假设在R中,我有一个data.frame,第一列代表时间(如POSIXct)。其余列(例如,第2列)是数字数据。如何快速将数据帧中的时间列分组为间隔?
我想将时间分成3分钟的时间间隔。每个区间将是落入该特定区间的值的平均值。
现在,我有一个循环遍历时间列并生成间隔。我想知道是否有更完美的方式来完成同样的事情?
在此先感谢。
德里克
我认为,类似下面的命令,将返回落在分为3个分钟间隔的值的列表。 (v
是数据框的名字和datecol
是日期列名)
library(plyr)
v<-data.frame(datecol=as.POSIXct(c(
"2010-01-13 03:02:38 UTC",
"2010-01-13 03:03:14 UTC",
"2010-01-13 03:05:52 UTC",
"2010-01-13 03:07:42 UTC",
"2010-01-13 03:09:38 UTC",
"2010-01-13 03:10:14 UTC",
"2010-01-13 03:12:52 UTC",
"2010-01-13 03:13:42 UTC",
"2010-01-13 03:15:42 UTC",
"2010-01-13 03:16:38 UTC",
"2010-01-13 03:18:14 UTC",
"2010-01-13 03:21:52 UTC",
"2010-01-13 03:22:42 UTC",
"2010-01-13 03:24:19 UTC",
"2010-01-13 03:25:19 UTC"
)), x = cumsum(runif(15)*10),y=cumsum(runif(15)*20))
dlply(v,.(cut(datecol,"3 min")),"[")
你确定你可以在'剪切()'在POSIXct类型?我尝试这个时遇到了错误。 – 2010-05-27 21:28:43
@Dirk Eddelbuettel:我编辑了包含我正在测试的数据框 – 2010-05-28 05:34:25
动物园和XTS包擅长这一点,并有丰富的文档。这里是一个罐装预to.minutes3
,但我也用aggregate.zoo()
自定义功能做手工相同:
> library(xts)
> x <- xts(cumsum(abs(rnorm(20))), Sys.time()+60*(0:19))
> x
[,1]
2010-05-27 14:44:25 1.2870
2010-05-27 14:45:25 3.3187
2010-05-27 14:46:25 4.0976
2010-05-27 14:47:25 5.3304
2010-05-27 14:48:25 6.9415
2010-05-27 14:49:25 7.4508
2010-05-27 14:50:25 8.5281
2010-05-27 14:51:25 8.7145
2010-05-27 14:52:25 9.0120
2010-05-27 14:53:25 10.5063
2010-05-27 14:54:25 11.6312
2010-05-27 14:55:25 11.9813
2010-05-27 14:56:25 13.8883
2010-05-27 14:57:25 14.1696
2010-05-27 14:58:25 14.3269
2010-05-27 14:59:25 14.6768
2010-05-27 15:00:25 15.4926
2010-05-27 15:01:25 16.8408
2010-05-27 15:02:25 18.7739
2010-05-27 15:03:25 19.7815
> to.minutes3(x)
x.Open x.High x.Low x.Close
2010-05-27 14:44:25 1.2870 1.2870 1.2870 1.2870
2010-05-27 14:47:25 3.3187 5.3304 3.3187 5.3304
2010-05-27 14:50:25 6.9415 8.5281 6.9415 8.5281
2010-05-27 14:53:25 8.7145 10.5063 8.7145 10.5063
2010-05-27 14:56:25 11.6312 13.8883 11.6312 13.8883
2010-05-27 14:59:25 14.1696 14.6768 14.1696 14.6768
2010-05-27 15:02:25 15.4926 18.7739 15.4926 18.7739
2010-05-27 15:03:25 19.7815 19.7815 19.7815 19.7815
>
类似问题http://stackoverflow.com/questions/2441136/what-is-an-efficient-方法分区和聚合间隔时间 – Marek 2010-05-29 19:36:37