【发布时间】:2014-03-08 13:19:14
【问题描述】:
我正在尝试将数据子集或过滤到定义的时间间隔中。你能帮我将以下数据分成 2 分钟的时间间隔吗?我查看了 Lubridate、split() 和 cut(),但无法弄清楚如何正确执行此操作。
我查看了this post on SO,但它似乎不是我需要的。
请注意,第 1 列和第 2 列是字符类,第 3 列是 POSIXct 类。如果可能的话,我想让解决方案使用日期时间列 (POSIXct)。
date time datetime use..kW. gen..kW. Grid..kW.
120 12/31/2013 21:59 2013-12-31 21:59:00 1.495833 -0.003083333 1.495833
121 12/31/2013 21:58 2013-12-31 21:58:00 1.829583 -0.003400000 1.829583
122 12/31/2013 21:57 2013-12-31 21:57:00 1.977283 -0.003450000 1.977283
123 12/31/2013 21:56 2013-12-31 21:56:00 2.494750 -0.003350000 2.494750
124 12/31/2013 21:55 2013-12-31 21:55:00 2.218283 -0.003500000 2.218283
125 12/31/2013 21:54 2013-12-31 21:54:00 2.008283 -0.003566667 2.008283
126 12/31/2013 21:53 2013-12-31 21:53:00 2.010917 -0.003600000 2.010917
127 12/31/2013 21:52 2013-12-31 21:52:00 2.011867 -0.003583333 2.011867
128 12/31/2013 21:51 2013-12-31 21:51:00 2.015033 -0.003600000 2.015033
129 12/31/2013 21:50 2013-12-31 21:50:00 2.096550 -0.003850000 2.096550
新的子集只会从每两分钟间隔获取数据,如下所示:
date time datetime use..kW. gen..kW. Grid..kW.
121 12/31/2013 21:58 2013-12-31 21:58:00 1.829583 -0.003400000 1.829583
123 12/31/2013 21:56 2013-12-31 21:56:00 2.494750 -0.003350000 2.494750
125 12/31/2013 21:54 2013-12-31 21:54:00 2.008283 -0.003566667 2.008283
127 12/31/2013 21:52 2013-12-31 21:52:00 2.011867 -0.003583333 2.011867
129 12/31/2013 21:50 2013-12-31 21:50:00 2.096550 -0.003850000 2.096550
对于我的数据,我实际上将执行 5 和 15 分钟的间隔。但是如果我对上面的数据和 2 分钟的时间间隔有一个好的解决方案,我应该能够适当地调整代码以满足我的需要。
【问题讨论】:
-
不清楚您要做什么,为什么它与时间相关,或者为什么
Data[c(FALSE,TRUE),]不起作用。 -
我想根据时间间隔过滤我的数据。在我上面提供的示例数据中,我只想每 2 分钟进行一次观察 - 不是每两分钟计算一次任何函数,只是在时间间隔内对观察进行子集化。这有帮助吗?
-
简单的子集规则,结合正则表达式,在这里可能就足够了。例如。对于 data.frame
d:d[grep('[02468]$', d$time), ]。该模式匹配任何以 0、2、4、6 或 8 结尾的字符串(时间)。
标签: r time-series posixct