【问题标题】:split or subset data into 30 minute intervals将数据拆分或子集为 30 分钟间隔
【发布时间】:2013-03-12 11:51:35
【问题描述】:

我有一个如下形式的数据框:

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 分钟的 bin 中。是否有捷径可寻?我查看了split() 函数,但似乎需要采用数字格式才能使其工作,我有时间使用POSIXct 格式。任何想法将不胜感激。

【问题讨论】:

标签: r time split subset


【解决方案1】:

这是为您准备的单行代码(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 以查看所有可能的格式。

【讨论】:

  • 作为一个警告,在您给出的示例中,如果它的顺序正确,则午夜之后的值应更改为 2012-06-21 否则它们将被错误地翻译strptime.
  • 谢谢,这可以完美地将数据分成 30 分钟的间隔。有没有办法使用 'apply()' 或其他函数来找到每个时间间隔内温度的平均值和标准误差?
  • 使用lapply。例如,如果您将我的回答结果保存为reslapply(res, function(x)mean(x$Temp))lapply(res, function(x)sd(x$Temp))
猜你喜欢
  • 2019-04-12
  • 1970-01-01
  • 2019-09-28
  • 1970-01-01
  • 2012-04-06
  • 2021-11-20
  • 2020-03-03
  • 2021-07-16
  • 2015-10-18
相关资源
最近更新 更多