Как бы вы получили почасовые средние значения для нескольких столбцов данных за ежедневный период и показывали результаты для двенадцати "хостов" на одном графике? То есть я хотел бы наметить, как выглядит 24-часовой период для данных за недели. Конечной целью будет сравнение двух наборов этих данных до и после выборок.
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 ~ date | Host) с хорошим эффектом. Однако вместо того, чтобы показывать каждую дату недели, я бы хотел, чтобы ось X была часами дня.
Попытка передать эти данные в объект 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
столбец является фактором.