2011-02-17 40 views
2

從Web日誌文件中繪製每秒請求圖形我試圖使用我們的apache日誌文件來繪製每秒請求圖。 我已將日誌按摩到時間戳的簡單列表,每個請求一個條目。如何使用R

4時02分28秒
4時02分28秒
4時02分28秒
4時02分29秒
...

我不能完全弄清楚如何獲得[R以秒爲單位來識別時間和聚集。 感謝您的任何幫助

+1

作爲便箋,您可能對[Logstalgia](http://code.google.com/p/logstalgia/)有趣的圖像感興趣 – Sharpie 2011-02-18 00:46:08

回答

1

在我看來,既然你已經在一秒鐘的間隔時間郵票,所有你需要做的是做一個時間戳的頻率計數和繪製頻率在原始時間訂單。說timeStamps是你的時間戳記的陣列,那麼你會怎麼做:

plot(c(table(timeStamps))) 

我假設你想在某一段時期繪製在每一秒的時間間隔的日誌信息。另外我假設HMS時間戳在一天之內。請注意,table函數會生成其參數的頻率計數。

3

lubridate軟件包使日期和時間的工作非常容易。

這是一個使用lubridate的hms()函數的示例。 hms將字符串轉換爲一個數據框,並在單獨的列中顯示小時,分鐘和秒。對於myd(月 - 日 - 年),dmy(日 - 月 - 年),毫秒(分 - 秒)等類似的功能...您可以獲得這一點。

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 

此時,時間是一個直接的數據幀,您可以隔離任何你希望的列:我不太確定

str(times) 

Classes 'period' and 'data.frame': 4 obs. of 6 variables: 
$ year : num 0 0 0 0 
$ month : num 0 0 0 0 
$ day : num 0 0 0 0 
$ hour : num 4 4 4 4 
$ minute: num 2 2 2 2 
$ second: num 28 28 28 29 
+0

我無法讓我的數據處於愉快的格式讓cms()工作。我讀數據使用數據< - c(read.table(「timestamps.log」))但每次我嘗試hms(數據)它給了我一個錯誤,該屬性必須與矢量的長度相同 – 2011-02-17 22:01:21

+0

也許你可以在上面的問題中使用dput()並從數據文件中粘貼一小段摘錄,以便我們可以看到您的格式的獨特之處? – Andrie 2011-02-17 22:05:09

1

,如何正確地做這個,但這應該是一種可能的方式,也許可以幫助你。

  1. 取代字符串,從數據庫中獲取數據作爲UNIX時間戳,表示從1970-01-01開始的秒數。

  2. 例如,使用hist(數據)繪製直方圖。或者,您可以使用reshape2包中的melt命令並使用cast創建數據幀,其中一列是時間戳,另一列確定當時的事務數。

  3. 使用as.POSIXlt(your.unix.timestamps, origin="1970-01-01", tz="GMT")將時間戳轉換爲R可理解的日期時間結構。

  4. 然後使用來自點3的數據使用format爲圖添加標籤。

下面是一個例子:

# 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) 

- 希望這有助於

+0

謝謝,我也喜歡這個解決方案。我能夠運行您的示例,但因無法轉換爲POSIXlt類而收到錯誤消息。我認爲這是因爲當我從文件中讀取它轉換爲科學記數法 – 2011-02-17 22:11:35