【问题标题】:R bin timestamps occuring between two timestampsR bin 时间戳出现在两个时间戳之间
【发布时间】: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 分钟段(从项目开始时间开始)...

标签: r timestamp


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-12
    • 2016-11-20
    • 2021-09-09
    • 1970-01-01
    • 2018-05-29
    相关资源
    最近更新 更多