【发布时间】:2022-01-07 14:27:50
【问题描述】:
我正在寻找以下问题的 data.table 解决方案。
假设我有以下数据集:
library(data.table)
library(lubridate)
DT <- data.table(date = c("2019-01-01 00:03:04",
"2019-01-01 00:07:03",
"2019-01-01 00:15:23",
"2019-01-01 00:16:28",
"2019-01-01 00:21:30"))
DT
date
1: 2019-01-01 00:03:04
2: 2019-01-01 00:07:03
3: 2019-01-01 00:15:23
4: 2019-01-01 00:16:28
5: 2019-01-01 00:21:30
我希望将每个日期映射为每天 15 分钟的间隔。所以最终的数据集看起来像:
date date_15min_grp
1: 2019-01-01 00:03:04 1
2: 2019-01-01 00:07:03 1
3: 2019-01-01 00:15:23 2
4: 2019-01-01 00:16:28 2
5: 2019-01-01 00:21:30 2
这些组在一天级别上是唯一的,因此 2019-01-01 00:03:04 和 2019-01-02 00:03:04 都将返回值 1。我当前的解决方案是提取每天的小时/分钟/秒部分。然后我将添加这些值(转换为分钟后),将它们除以 60,并尝试将每个值映射到最近的“组”。但这似乎又慢又不优雅。
非常感谢 data.table/lubridate。
非常感谢!
【问题讨论】:
-
我很确定有一个 cut 方法,其间隔规范可以设置为 POSIXct 向量的“15 分钟”。
标签: r dplyr data.table lubridate