如何使用R绘制每秒来自web日志文件的请求

如何使用R绘制每秒来自web日志文件的请求,r,R,我正在尝试使用apache日志文件绘制每秒请求的图表。 我已经将日志压缩为一个简单的时间戳列表,每个请求一个条目 04:02:28 04:02:28 04:02:28 04:02:29 我不太明白如何让R识别为时间并聚合到每秒。 感谢您的帮助lubridate软件包使处理日期和时间变得非常简单 下面是一个使用lubridate的hms()函数的示例。hms将字符串转换为具有小时、分钟和秒的独立列的数据帧。myd(月-日-年)、dmy(日-月-年)、ms(分-秒)也有类似的功能。。。你明白了 l

我正在尝试使用apache日志文件绘制每秒请求的图表。 我已经将日志压缩为一个简单的时间戳列表,每个请求一个条目

04:02:28
04:02:28
04:02:28
04:02:29

我不太明白如何让R识别为时间并聚合到每秒。
感谢您的帮助

lubridate软件包使处理日期和时间变得非常简单

下面是一个使用lubridate的hms()函数的示例。hms将字符串转换为具有小时、分钟和秒的独立列的数据帧。myd(月-日-年)、dmy(日-月-年)、ms(分-秒)也有类似的功能。。。你明白了

library(lubridate)
data <- c("04:02:28", "04:02:28", "04:02:28", "04:02:29")
times <- hms(data)
times$second

[1] 28 28 28 29

我不完全确定,如何正确地做到这一点,但这应该是一种可能的方法,也许对你有帮助

  • 从数据库中以UNIX时间戳的形式获取数据,而不是字符串,该时间戳表示从1970-01-01开始的秒数

  • 例如,使用hist(数据)绘制直方图。或者,您可以使用
    restrape2
    软件包中的
    melt
    命令,并使用
    cast
    创建数据帧,其中一列为时间戳,另一列确定当时的事务数

  • 使用
    as.POSIXlt(your.unix.timestamps,origin=“1970-01-01”,tz=“GMT”)
    将时间戳转换为可理解的日期时间结构

  • 然后使用点3的数据,使用
    格式
    将标签添加到绘图中

  • 下面是一个例子:

    # original data
    data.timestamps = c(1297977452, 1297977452, 1297977453, 1297977454, 1297977454, 1297977454, 1297977455, 1297977455)
    data.unique.timestamps = unique(data.timestamps)
    
    # get the labels
    data.labels = format(as.POSIXlt(data.unique.timestamps, origin="1970-01-01", tz="GMT"), "%H:%M:%S")
    
    # plot the histogram without axes
    hist(data.timestamps, axes=F)
    
    # add axes manually
    axis(2)
    axis(1, at=unique(data.timestamps), labels=data.labels)
    
    --
    希望这能有所帮助

    在我看来,既然您已经有了1秒粒度的时间戳,那么您所需要做的就是对时间戳进行频率计数,并按原始时间顺序绘制频率。假设
    timeStamps
    是您的时间戳数组,那么您将执行以下操作:

    plot(c( table( timeStamps ) ) )
    

    我假设您希望在特定时间段内以每一秒的间隔绘制日志消息。我还假设HMS的时间戳在一天之内。请注意,
    函数生成其参数的频率计数。

    谢谢!这对我来说很有效,我是R新手,所以在获取数据时遇到了一些麻烦,我仍然不太确定c()和table()做了什么,但我很高兴。再次感谢。我无法使我的数据以令人满意的格式显示,以便cms()正常工作。我在using data(使用数据)中读取了数据,也许您可以使用dput()并粘贴上面问题中数据文件的一个小摘录,这样我们就可以看到您的格式有什么独特之处?谢谢,我也喜欢这个解决方案。我能够运行您的示例,但收到一个错误,即无法转换为类POSIXlt。我想这是因为当我从文件中读到它转换成科学符号作为旁注时,你们可能会对一些有趣的可视化感兴趣
    plot(c( table( timeStamps ) ) )