微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决当我在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创建

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。