Jak uzyskałbyś godzinowe środki dla wielu kolumn danych dla okresu dziennego i pokazałbyś wyniki dla dwunastu „hostów” na tym samym wykresie? To znaczy, chciałbym wykreślić, jak wygląda okres 24 godzin, dla danych wartych tygodni. Ostatecznym celem byłoby porównanie dwóch zestawów tych danych, przed i po próbkowaniu.
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
Udało mi się uruchomić xyplot (CPUUser ~ date | Host) z dobrym skutkiem. Jednak zamiast pokazywać każdą datę w tygodniu, chciałbym, aby oś X była godzinami dnia.
Próba przeniesienia tych danych do obiektu xts powoduje błędy, takie jak „order.by wymaga odpowiedniego obiektu opartego na czasie”
Oto str () ramki danych:
'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 ...
AKTUALIZACJA: Na wszelki wypadek postanowiłem wybrać wykres pudełkowy, aby pokazać zarówno medianę, jak i „wartości odstające”.
Głównie:
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)
Dzięki
str()
data.frame.
xts()
ponieważdates
kolumna jest czynnikiem.