当我在 R 中合并日期和时间时,如何定义以小时为单位的时间段?
How to define periods of time in hours when I have merged dates and time in R?
我从一个实验中获得了一个由几列不同类型数据组成的数据集,我需要在特定日期准确开始计数并每 24 小时对数据进行分组。
缺点是我同时拥有日期和时间(即“2019-04-06 07:45:00”)。我试图计算单元格之间的差异,但我得到的是日期之间的差异,00:00:00 和 07:45:00 之间的时间包含在错误的日期。
有没有办法计算 24 小时周期?
我也尝试用 lubridate
包转换单元格的类型,但没有成功。因为我不知道如何将第一行设置为24h范围周期的起点。
提前致谢。
如果我没理解错的话,您希望将 07: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 年 8 月 20 日创建
我从一个实验中获得了一个由几列不同类型数据组成的数据集,我需要在特定日期准确开始计数并每 24 小时对数据进行分组。
缺点是我同时拥有日期和时间(即“2019-04-06 07:45:00”)。我试图计算单元格之间的差异,但我得到的是日期之间的差异,00:00:00 和 07:45:00 之间的时间包含在错误的日期。
有没有办法计算 24 小时周期?
我也尝试用 lubridate
包转换单元格的类型,但没有成功。因为我不知道如何将第一行设置为24h范围周期的起点。
提前致谢。
如果我没理解错的话,您希望将 07: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 年 8 月 20 日创建