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
źródło
xts()
ponieważdates
kolumna jest czynnikiem.str()
data.frame.Odpowiedzi:
Oto jedno podejście wykorzystujące cut () do tworzenia odpowiednich współczynników godzinowych i ddply () z biblioteki plyr do obliczania średnich.
źródło
Agregacja działa również bez użycia
zoo
(z losowymi danymi z 2 zmiennych przez 3 dni i 4 hostami jak z JWM). Zakładam, że masz dane ze wszystkich hostów dla każdej godziny.Nie jestem do końca pewien, czy chcesz uśredniać w ciągu każdej godziny, czy w ciągu każdej godziny przez wszystkie dni. Zrobię oba.
Wynik wygląda następująco:
Nie jestem też do końca pewien, jakiego rodzaju wykres chcesz. Oto wersja wykresu bez kości dla pierwszej zmiennej z osobnymi liniami danych dla każdego hosta.
Ten sam wykres dla danych, który jest uśredniany tylko w ciągu każdej godziny.
źródło
Możesz pobrać
aggregate.zoo
funkcję z pakietuzoo
: http://cran.r-project.org/web/packages/zoo/zoo.pdfCharlie
źródło
aggregate.zoo
funkcji, chociaż użyłemzoo
pakietu. Czy upewniłeś się, że Twój obiekt byłzoo
najpierw obiektem? Dokumentacja, na którą wskazałem, powinna ci w tym pomóc.