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 时间戳出现在两个时间戳之间的主要内容,如果未能解决你的问题,请参考以下文章