如何解决当我在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 举报,一经查实,本站将立刻删除。