複数のデータ列、1日ごとに1時間ごとの平均を取得し、同じグラフに12個の「ホスト」の結果を表示するにはどうすればよいですか?つまり、1週間分のデータについて、24時間の期間をグラフ化したいと思います。最終的な目標は、サンプリングの前後にこのデータの2つのセットを比較することです。
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
私はxyplot(CPUUser〜dates | Host)を効果的に実行できました。ただし、週の各日付を表示するのではなく、X軸を1日の時間にしたいと思います。
このデータをxtsオブジェクトに取得しようとすると、「order.byには適切な時間ベースのオブジェクトが必要」などのエラーが発生します
データフレームのstr()は次のとおりです。
'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 ...
更新:将来の参考のために、中央値と「外れ値」の両方を示すために、箱ひげ図を使用することにしました。
基本的に:
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)
ありがとう
str()
data.frameを見てみましょう。
xts()
ため、これらのエラーが発生すると推測していますdates
。