Как бы вы получили почасовые средние значения для нескольких столбцов данных за ежедневный период и показывали результаты для двенадцати "хостов" на одном графике? То есть я хотел бы наметить, как выглядит 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)
Благодарность
источник
xts()
потому чтоdates
столбец является фактором.str()
на data.frame.Ответы:
Вот один из подходов, использующих cut () для создания подходящих часовых коэффициентов и ddply () из библиотеки plyr для расчета средних значений.
источник
Агрегация также работает без использования
zoo
(со случайными данными из 2 переменных за 3 дня и 4 хостов, как из JWM). Я предполагаю, что у вас есть данные со всех хостов за каждый час.Я не совсем уверен, хотите ли вы усреднить только в течение каждого часа или в течение каждого часа в течение всех дней. Я сделаю оба.
Результат выглядит так:
Я также не совсем уверен, какой тип графика вам нужен. Вот базовая версия графика только для первой переменной с отдельными строками данных для каждого хоста.
Тот же график для данных, которые усредняются только в течение каждого часа.
источник
Вы можете проверить
aggregate.zoo
функцию из пакетаzoo
: http://cran.r-project.org/web/packages/zoo/zoo.pdfЧарли
источник
aggregate.zoo
функцию, хотя я использовалzoo
пакет. Вы удостоверились, что Ваш объект былzoo
объектом сначала? Документация, на которую я указал, должна вам помочь.