将每隔 30 分钟收集的数据舍入为设置的 30 分钟间隔

Posted

技术标签:

【中文标题】将每隔 30 分钟收集的数据舍入为设置的 30 分钟间隔【英文标题】:Rounding data collected at changing 30 min intervals into set 30 min intervals 【发布时间】:2019-04-12 07:56:58 【问题描述】:

我有一个数据集,其中在四年内每隔 30 分钟收集一次测量值。然而,由于这些数据是在如此长的时间内收集的,因此记录仪器已经开始和停止了几次。数据仍以 30 分钟的间隔记录,但在收集期间的间隔不一致。

例如,假设我有 100 天的数据,其中间隔为: “2015-08-01 09:03:00、2015-08-01 09:33:00、2015-08-01 10:03:00”等...

然后在短暂的间隔之后,接下来的 50 天是这样的: “2016-02-01 09:13:00、2016-02-01 09:43:00、2016-02-01 10:13:00”等...

我想应用一些方法,将数据“四舍五入”成设置的 30 分钟间隔,这些间隔在所有四年中都是一致的,例如: “2015-08-01 09:00:00、2015-08-01 09:30:00、2015-08-01 10:00:00”等

谢谢。

【问题讨论】:

【参考方案1】:

lubridatefloor_date 可以满足您的需求:

dates<-c("2016-02-01 09:13:00","2016-02-01 09:33:00")
floor_date(as_datetime(dates), unit="30 minutes")

[1] "2016-02-01 09:00:00 UTC" "2016-02-01 09:30:00 UTC"

当然,如果一个时间间隔是 9:29,而下一个时间间隔是 10:02,那么 9:30 就会出现缺失值。鉴于您的数据的性质,不确定如何避免这种情况。

【讨论】:

以上是关于将每隔 30 分钟收集的数据舍入为设置的 30 分钟间隔的主要内容,如果未能解决你的问题,请参考以下文章

CentOS7设置定时任务 每隔30分钟执行一次命令

每隔 30 分钟计算一次数据库中的重复记录

有没有办法将时间戳向上或向下舍入到最接近的 30 分钟间隔?

java Quartz Scheduler cron 表达式每隔 30 分钟后一刻钟

crontab怎样每隔5分钟执行一次脚本

常用函数