R bin 时间戳出现在两个时间戳之间

Posted

技术标签:

【中文标题】R bin 时间戳出现在两个时间戳之间【英文标题】:R bin timestamps occuring between two timestamps 【发布时间】:2017-11-27 23:03:39 【问题描述】:

我有一个数据框,包括:

两列具有不同的开始和结束时间戳(POSIXct 类) 项目 另一个时间戳(POSIXct 类)列显示事件 发生在开始和结束时间范围内

一个项目 ID 列 项目自然有多个事件。

Projid  Event                     BEGIN_DT            END_DT              
1       04/12/2013 09:00:00      04/12/2013 08:12:00 04/14/2013 20:14:00
1       04/13/2013 15:16:24      04/12/2013 08:12:00 04/14/2013 20:14:00
2       06/06/2012 18:00:00      06/06/2012 13:54:32 08/06/2012 23:59:43
2       06/07/2012 22:54:32      06/06/2012 13:54:32 08/06/2012 23:59:43

我想为每个事件添加一个字段,显示它所属的 60 分钟时间段(如项目的第一个小时或第二个小时或第 n 个小时等...)。这怎么可能?

【问题讨论】:

您在寻找活动的时间吗?您能否为您给出的示例提供预期的输出? 不,我不需要事件的时间,而是它所属的第 n 个 60 分钟段(从项目开始时间开始)... 【参考方案1】:

如何在difftime 上使用floor 以小时为单位:

# Your sample data
df <- structure(list(
    Projid = c(1L, 1L, 2L, 2L),
    Event = structure(c(1365721200, 1365830184, 1338969600, 1339073672), class = c("POSIXct", "POSIXt"), tzone = ""),
    BEGIN_DT = structure(c(1365718320, 1365718320, 1338954872, 1338954872), class = c("POSIXct", "POSIXt"), tzone = ""),
    END_DT = structure(c(1365934440, 1365934440, 1344261583, 1344261583), class = c("POSIXct", "POSIXt"), tzone = "")),
    .Names = c("Projid", "Event", "BEGIN_DT", "END_DT"), row.names = c(NA, -4L), class = "data.frame");

# Add hour bin
df$hourBin <- floor(difftime(df$Event, df$BEGIN_DT, unit = "hours")) + 1;
df;
#Projid               Event            BEGIN_DT              END_DT  hourBin
#1      1 2013-04-12 09:00:00 2013-04-12 08:12:00 2013-04-14 20:14:00  1 hours
#2      1 2013-04-13 15:16:24 2013-04-12 08:12:00 2013-04-14 20:14:00 32 hours
#3      2 2012-06-06 18:00:00 2012-06-06 13:54:32 2012-08-06 23:59:43  5 hours
#4      2 2012-06-07 22:54:32 2012-06-06 13:54:32 2012-08-06 23:59:43 34 hours

【讨论】:

以上是关于R bin 时间戳出现在两个时间戳之间的主要内容,如果未能解决你的问题,请参考以下文章

在pyspark中的两个时间戳之间创建一个时间戳数组

PostgreSQL 获取两个日期时间/时间戳之间的随机日期时间/时间戳

php如何计算两个时间戳之间相差的日时分秒

php如何计算两个时间戳之间相差的日时分秒

计算两个时间戳之间的差异并获得 unix 时间戳的差异

检查两个日期之间的时间戳