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

use*_*414 4 time split r 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
Run Code Online (Sandbox Code Playgroud)

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

pla*_*pus 7

dat是你的单线程(作为你的数据帧):

split(dat, cut(strptime(paste(dat$date, dat$time), format="%F %R"),"30 mins"))
Run Code Online (Sandbox Code Playgroud)

确实cut.POSIXt接受为休息值

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

另外,我用作%F %R快捷方式%Y-%m-%d %H:%M:?strptime查看所有可能的格式.

  • 但是,作为一点警告,在你给出的例子中,如果它的意思是正确的顺序,你的值在午夜过后应该改为"2012-06-21",否则它们将被'strptime`错误地翻译. (2认同)