Làm thế nào bạn có thể nhận được phương tiện hàng giờ cho nhiều cột dữ liệu, trong một khoảng thời gian hàng ngày và hiển thị kết quả cho mười hai "Máy chủ" trong cùng một biểu đồ? Đó là, tôi muốn vẽ biểu đồ của một khoảng thời gian 24 giờ, cho dữ liệu trong một tuần. Mục tiêu cuối cùng sẽ là so sánh hai bộ dữ liệu này, trước và sau khi lấy mẫu.
dates Host CPUIOWait CPUUser CPUSys
1 2011-02-11 23:55:12 db 0 14 8
2 2011-02-11 23:55:10 app1 0 6 1
3 2011-02-11 23:55:09 app2 0 4 1
Tôi đã có thể chạy xyplot (CPUUser ~ ngày | Máy chủ) với hiệu quả tốt. Tuy nhiên, thay vì hiển thị mỗi ngày trong tuần, tôi muốn trục X là giờ trong ngày.
Cố gắng đưa dữ liệu này vào một đối tượng xts dẫn đến các lỗi như "order.by yêu cầu một đối tượng dựa trên thời gian thích hợp"
Đây là một str () của khung dữ liệu:
'data.frame': 19720 obs. of 5 variables:
$ dates : POSIXct, format: "2011-02-11 23:55:12" "2011-02-11 23:55:10" ...
$ Host : Factor w/ 14 levels "app1","app2",..: 9 7 5 4 3 10 6 8 2 1 ...
$ CPUIOWait: int 0 0 0 0 0 0 0 0 0 0 ...
$ CPUUser : int 14 6 4 4 3 10 4 3 4 4 ...
$ CPUSys : int 8 1 1 1 1 3 1 1 1 1 ...
CẬP NHẬT: Chỉ để tham khảo trong tương lai, tôi quyết định đi cùng với một boxplot, để hiển thị cả trung vị và 'ngoại lệ'.
Bản chất:
Data$hour <- as.POSIXlt(dates)$hour # extract hour of the day
boxplot(Data$CPUUser ~ Data$hour) # for a subset with one host or for all hosts
xyplot(Data$CPUUser ~ Data$hour | Data$Host, panel=panel.bwplot, horizontal=FALSE)
Cảm ơn
str()
data.frame.
xts()
vìdates
cột là một yếu tố.