将POSIX时间分配给R中的不等间隔
Posted
技术标签:
【中文标题】将POSIX时间分配给R中的不等间隔【英文标题】:Assigning POSIX times to unequal intervals in R 【发布时间】:2016-03-08 03:13:09 【问题描述】:我有一个来电时间列表:
昏暗(传入) [1] 50357 1 头部(传入,n = 50) [1]“2015-10-08 02:14:46 EST”“2015-10-08 16:18:04 EST”“2015-10-08 01:32:42 EST”“2015-10-08 18:美国东部时间 48:40” [5]“2015-10-08 16:53:33 EST”“2015-10-08 12:23:37 EST”“2015-10-08 06:38:34 EST”“2015-10-08 17:美国东部时间 15:41” [9]“2015-10-08 19:43:00 EST”“2015-10-08 18:19:44 EST”“2015-10-08 01:10:39 EST”“2015-10-08 19:美国东部时间 45:04" [13]“2015-10-08 18:29:57 EST”“2015-10-08 10:11:58 EST”“2015-10-08 08:44:10 EST”“2015-10-08 09:美国东部时间 32:25” [17]“2015-10-08 08:23:32 EST”“2015-10-08 14:11:49 EST”“2015-10-08 06:27:45 EST”“2015-10-08 00:美国东部时间 54:38” [21]“2015-10-08 08:56:34 EST”“2015-10-08 07:12:52 EST”“2015-10-08 18:28:40 EST”“2015-10-08 09:美国东部时间 35:34” [25]“2015-10-08 09:51:06 EST”“2015-10-08 08:53:54 EST”“2015-10-08 00:42:43 EST”“2015-10-08 10:美国东部时间 25:04” [29]“2015-10-08 07:13:28 EST”“2015-10-08 08:09:18 EST”“2015-10-08 16:32:59 EST”“2015-10-08 07:美国东部时间 37:25” [33]“2015-10-08 07:46:52 EST”“2015-10-08 08:25:11 EST”“2015-10-08 11:51:10 EST”“2015-10-08 02:美国东部时间 02:02" [37]“2015-10-08 09:23:24 EST”“2015-10-08 12:03:03 EST”“2015-10-08 07:36:34 EST”“2015-10-08 08:美国东部时间 27:38” [41]“2015-10-08 02:16:47 EST”“2015-10-08 08:11:54 EST”“2015-10-08 07:46:22 EST”“2015-10-08 08:美国东部时间 34:52" [45]“2015-10-08 00:00:37 EST”“2015-10-08 08:37:26 EST”“2015-10-08 01:33:00 EST”“2015-10-08 17:美国东部时间 16:15” [49] “2015-10-08 09:10:07 EST” “2015-10-08 08:07:43 EST”我的目标是将这些时间分配给它们所属的相应间隔,但是,这些间隔不是等距的。例如:前 25 个区间是:
头(数据,n = 25) 间隔 1 2015-10-08 00:05:00 2 2015-10-08 00:12:00 3 2015-10-08 00:34:00 4 2015-10-08 00:40:00 5 2015-10-08 01:32:00 6 2015-10-08 01:52:00 7 2015-10-08 02:52:00 8 2015-10-08 02:58:00 9 2015-10-08 04:13:00 10 2015-10-08 04:30:00 11 2015-10-08 05:58:00 12 2015-10-08 06:16:00 13 2015-10-08 06:41:00 14 2015-10-08 06:54:00 15 2015-10-08 07:07:00 16 2015-10-08 07:25:00 17 2015-10-08 07:38:00 18 2015-10-08 07:52:00 19 2015-10-08 08:05:00 20 2015-10-08 08:18:00 21 2015-10-08 08:31:00 22 2015-10-08 08:44:00 23 2015-10-08 08:57:00 24 2015-10-08 09:10:00 25 2015-10-08 09:22:00例如,第一次 incoming[1,]
应分配给 02:52:00 间隔,因为它介于 01:52:00 和 02:52:00 之间,第三次 incoming[3,]
应分配给01:52:00 间隔,因为它介于 01:32:00 和 01:52:00 之间,依此类推。
我的最终目标是计算每个间隔内有多少次传入。我可以将传入的时间总结为均匀的序列,例如 10 分钟的时间间隔:interval <- incoming - minutes(minute(incoming) %% 10) - seconds(second(incoming))
,它将每次分配给 10 分钟的间隔,但我不确定如何在不均匀的间隔下做到这一点
【问题讨论】:
【参考方案1】:我使用 scan 来读取这些时间(这导致它们都在我的时区),然后检查findInterval
是否是正确的选择,它似乎可以毫无怨言地处理 POSIXct 对象(因为它们在存储为数字模式):
> table( findInterval( incoming$incoming, data$interval) ) # redone with new dput output
0 1 2 4 5 6 10 12 13 14 15 16 17 19 20 21 22 23 24 25 26 27 28 30 36 37 38 40 46 56 57 59 60 64 65 66 71
18 8 11 3 2 3 1 2 1 2 2 2 3 3 5 4 4 3 1 2 1 1 1 1 1 1 1 1 1 1 1 1 2 1 2 1 2
零区间在区间向量中的第一个“切割”之前。如果您希望它移动 1,则在切点向量(第二个参数)的两侧加上 -Inf
和 Inf
。
【讨论】:
我假设上述解决方案中的interval
在我的示例中指的是data
?无论如何,当我输入该代码时,我都会收到以下错误:Error in findInterval(incoming, interval) : (list) object cannot be coerced to type 'double'
您的数据采用数据框形式,因此(一如既往)在将向量传递给函数时需要从中提取列。以上是关于将POSIX时间分配给R中的不等间隔的主要内容,如果未能解决你的问题,请参考以下文章