Bagaimana Anda mendapatkan sarana per jam untuk beberapa kolom data, untuk periode harian, dan menunjukkan hasil selama dua belas "Tuan Rumah" dalam grafik yang sama? Yaitu, saya ingin menggambarkan seperti apa periode 24 jam itu, selama satu minggu untuk data yang berharga. Tujuan akhirnya adalah untuk membandingkan dua set data ini, sebelum dan sesudah pengambilan sampel.
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
Saya sudah bisa menjalankan xyplot (CPUUser ~ date | Host) dengan efek yang baik. Namun, daripada menunjukkan setiap tanggal dalam seminggu, saya ingin sumbu X menjadi jam sehari.
Mencoba memasukkan data ini ke dalam objek xts menghasilkan kesalahan seperti "order.by memerlukan objek berbasis waktu yang tepat"
Berikut adalah str () dari bingkai data:
'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 ...
UPDATE: Hanya untuk referensi di masa depan, saya memutuskan untuk pergi dengan boxplot, untuk menunjukkan median, dan 'outlier'.
Pada dasarnya:
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)
Terima kasih
sumber
xts()
karenadates
kolom adalah faktor.str()
dari data.frame.Jawaban:
Berikut adalah salah satu pendekatan menggunakan cut () untuk membuat faktor per jam yang sesuai dan ddply () dari plyr library untuk menghitung rata-rata.
sumber
Agregasi juga berfungsi tanpa menggunakan
zoo
(dengan data acak dari 2 variabel selama 3 hari dan 4 host seperti dari JWM). Saya berasumsi bahwa Anda memiliki data dari semua host untuk setiap jam.Saya tidak sepenuhnya yakin apakah Anda ingin rata-rata hanya dalam setiap jam, atau dalam setiap jam sepanjang hari. Saya akan melakukan keduanya.
Hasilnya terlihat seperti ini:
Saya juga tidak sepenuhnya yakin tentang jenis grafik yang Anda inginkan. Berikut adalah versi sederhana dari grafik untuk variabel pertama dengan baris data terpisah untuk setiap host.
Grafik yang sama untuk data yang hanya dirata-rata dalam setiap jam.
sumber
Anda dapat checkout
aggregate.zoo
fungsi dari paketzoo
: http://cran.r-project.org/web/packages/zoo/zoo.pdfCharlie
sumber
aggregate.zoo
fungsinya, meskipun saya telah menggunakanzoo
paket. Apakah Anda memastikan bahwa objek Anda adalahzoo
objek pertama? Dokumentasi yang saya tunjukkan akan membantu Anda di sana.