我有以下格式的数据框:
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
格式的时间。任何想法都将不胜感激。
答案 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
以查看所有可能的格式。