当我在R中合并日期和时间时,如何定义以小时为单位的时间段?

问题描述

我从一个实验中获得了几列具有不同数据类型的数据集,我需要在特定日期准确开始计数,并每24小时将数据分组一次。

缺点是我将日期和时间放在一起(即“ 2019-04-06 07:45:00”)。我已经尝试计算单元格之间的差异,但是我得到的是日期之间的差异,并且错误的日期包括了00:00:00到07:45:00之间的时间。

有没有一种计算24小时周期的方法?

我还尝试使用lubridate包转换单元格的类型,但未成功。因为我不知道如何将第一行设置为24小时范围周期的起点。

谢谢。

解决方法

如果我对您的理解正确,则希望将上午7:45之前的任何时间都包含在前一天的数据中。如果是这样,只需从每个日期时间中减去7小时45分钟即可找到其日期。

假设我们有这样的数据:

df <- data.frame(Time  = as.POSIXct(c("2020-08-20 07:45:00","2020-08-20 08:45:00","2020-08-20 09:45:00","2020-08-20 15:45:00","2020-08-20 21:45:00","2020-08-21 05:45:00","2020-08-21 07:45:00","2020-08-21 21:45:00","2020-08-22 06:45:00","2020-08-22 08:45:00")),Value = 1:10)

df
#>                   Time Value
#> 1  2020-08-20 07:45:00     1
#> 2  2020-08-20 08:45:00     2
#> 3  2020-08-20 09:45:00     3
#> 4  2020-08-20 15:45:00     4
#> 5  2020-08-20 21:45:00     5
#> 6  2020-08-21 05:45:00     6
#> 7  2020-08-21 07:45:00     7
#> 8  2020-08-21 21:45:00     8
#> 9  2020-08-22 06:45:00     9
#> 10 2020-08-22 08:45:00    10

然后我们可以做:

library(lubridate)
df$Date <- date(df$Time - hours(7) - minutes(45))

我们将对数据进行适当的分组:

df
#>                   Time Value       Date
#> 1  2020-08-20 07:45:00     1 2020-08-20
#> 2  2020-08-20 08:45:00     2 2020-08-20
#> 3  2020-08-20 09:45:00     3 2020-08-20
#> 4  2020-08-20 15:45:00     4 2020-08-20
#> 5  2020-08-20 21:45:00     5 2020-08-20
#> 6  2020-08-21 05:45:00     6 2020-08-20
#> 7  2020-08-21 07:45:00     7 2020-08-21
#> 8  2020-08-21 21:45:00     8 2020-08-21
#> 9  2020-08-22 06:45:00     9 2020-08-21
#> 10 2020-08-22 08:45:00    10 2020-08-22

reprex package(v0.3.0)于2020-08-20创建

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...