Como você obteria meios horários para várias colunas de dados, por um período diário, e mostraria resultados para doze "hosts" no mesmo gráfico? Ou seja, eu gostaria de representar graficamente como é um período de 24 horas, por uma semana de dados. O objetivo final seria comparar dois conjuntos desses dados, antes e depois das amostragens.
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
Consegui executar o xyplot (CPUUser ~ datas | Host) com bom efeito. No entanto, em vez de mostrar cada data da semana, eu gostaria que o eixo X fosse as horas do dia.
Tentar inserir esses dados em um objeto xts resulta em erros como "order.by requer um objeto baseado em tempo apropriado"
Aqui está um str () do quadro de dados:
'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 ...
ATUALIZAÇÃO: Apenas para referência futura, eu decidi ir com um boxplot, para mostrar a mediana e os 'outliers'.
Essencialmente:
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)
obrigado
fonte
xts()
porque adates
coluna é um fator.str()
o data.frame.Respostas:
Aqui está uma abordagem usando cut () para criar os fatores horários apropriados e ddply () da biblioteca plyr para calcular as médias.
fonte
A agregação também funciona sem o uso
zoo
(com dados aleatórios de 2 variáveis por 3 dias e 4 hosts como no JWM). Presumo que você tenha dados de todos os hosts a cada hora.Não tenho certeza se você deseja calcular a média apenas dentro de cada hora ou dentro de cada hora durante todos os dias. Eu vou fazer as duas coisas.
O resultado fica assim:
Também não tenho muita certeza sobre o tipo de gráfico que você deseja. Aqui está a versão básica de um gráfico apenas para a primeira variável com linhas de dados separadas para cada host.
O mesmo gráfico para os dados que são calculados como média apenas a cada hora.
fonte
Você pode fazer o checkout da
aggregate.zoo
função no pacotezoo
: http://cran.r-project.org/web/packages/zoo/zoo.pdfCharlie
fonte
aggregate.zoo
função, embora tenha usado ozoo
pacote. Você se certificou de que seu objeto fossezoo
primeiro? A documentação que eu apontei deve ajudá-lo lá.