我有一些关于特定工作的数据;重要的部分是每个特定工作的开始时间和结束时间。 我想绘制聚合(计数)的同时作业,x轴是时间,y轴是在特定时间点运行的作业数。
由于这是我开始使用R,我开始使用一些预处理步骤,例如合并日期和时间列,转换为POSIXlt,计算timediffs()等等。 现在我有点卡住了。我不需要代码,但我会很感激任何暗示如何实现这一点。
具体来说,我真的不知道如何将作业的处理时间用作一个过程,而不仅仅是使用起点
这是我的数据框:
'data.frame': 10000 obs. of 7 variables:
$ Process_name : Factor
$ Process_start : POSIXlt, format: "2009-12-23 03:44:38"
$ Process_end : POSIXlt, format: "2009-12-23 03:44:42"
$ Process_duration(s) : Class 'difftime' atomic [1:10000] 4 75 1 2 1
$ ProcessIncludedInJob : Factor
我想知道在特定时间点同时运行的作业数量。工作是一个运行一段时间的过程。在运行期间,另一项工作可以同时启动和运行。我想计算并绘制这种情况以供进一步分析。我的第一种方法是在x上绘制日期,例如使用y轴的startdate或enddate。但由于每个工作都是一个过程,而不仅仅是一个时间点(开始或结束),我无法看到有多少工作同时运行。所以我想我必须以某种方式使用Jobstart列和Jobduration列。
答案 0 :(得分:1)
我在这里草拟一个大纲,但我们真的需要你发布可重现的数据( please!):
[5 , [ "x1" -> [100, 150, 400] ]
[3 , [ ["x2" -> [160, 200]], ["x4" -> [300]] ]
。 (这总是一个0到n之间的整数)转换为num_running_processes = number of started processes - number of ended processes
。注意'结束< t',而不是'< ='。
现在你真的不需要将你的时间间隔分为时间间隔(例如1分钟,或5秒或其他),因为你知道df$num_running_processes <- sum(Process_start <= t) - sum(Process_end < t)
只会改变价值在Process_start或Process_end中的任何一组时间。
num_running_processes
。你有一个非统一的时间轴,这没关系。请注意,它也是无序的,即新进程可以在前一个进程结束之前开始。 (我们通过按时间轴排序数据框来重新排序)df$t <- union(Process_start, Process_end)
,如上所述df$num_running_processes
绘制,排序或排序数据框之前(dplyr库非常适合进行这些操作)