将数据拆分或分组为30分钟

时间:2013-03-22 14:57:51

标签: r time split subset

我有以下格式的数据框:

Temp    Depth      Light   x   time date                   time.at.depth
104     18.59      -2.7    27 21:38 2012-06-20             4
109     18.59      -2.7    27 22:02 2012-06-20             5
110     18.75      -4.0    27 22:07 2012-06-20             5
113     18.91      -2.7    27 22:21 2012-06-20             4
114     18.91      -4.0    27 22:26 2012-06-20             5
115     18.91      -2.7    27 22:31 2012-06-20             5
117     18.91      -2.7    27 22:40 2012-06-20             4
118     18.75      -4.0    27 22:45 2012-06-20             5
119     18.75      -2.7    27 22:50 2012-06-20             5
121     18.59      -4.0    27 22:59 2012-06-20             4
122     18.75      -2.7    27 23:04 2012-06-20             5
123     18.75      -4.0    27 23:09 2012-06-20             5
126     18.59      -2.7    27 23:23 2012-06-20             5
127     18.59      -2.7    27 23:28 2012-06-20             5
128     18.59      -4.0    27 23:33 2012-06-20             5
133     18.75      -4.0    27 23:57 2012-06-20             5
136     18.59      -4.0    27 00:11 2012-06-20             5
138     18.59      -2.7    27 00:21 2012-06-20             5
140     18.91      -2.7    27 00:30 2012-06-20             5

我想将数据分组到30分钟的箱子中。是否有捷径可寻?我查看了split()函数,但看起来事情需要采用数字格式才能正常工作,我有POSIXct格式的时间。任何想法都将不胜感激。

1 个答案:

答案 0 :(得分:7)

以下是您的单行(dat是您的数据框):

split(dat, cut(strptime(paste(dat$date, dat$time), format="%F %R"),"30 mins"))

确实cut.POSIXt接受中断值

  

间隔规范,“sec”,“min”,“hour”,“day”,“DSTday”,“week”,“month”,“quarter”或“year”之一,可选地前面有一个整数和空格,或后跟“s”。

另外,我使用%F %R作为%Y-%m-%d %H:%M的快捷方式:请参阅?strptime以查看所有可能的格式。