Comment obtiendriez-vous des moyennes horaires pour plusieurs colonnes de données, pour une période quotidienne, et afficheriez-vous les résultats pour douze "hôtes" dans le même graphique? Autrement dit, j'aimerais représenter graphiquement à quoi ressemble une période de 24 heures, pour une semaine de données. L'objectif final serait de comparer deux ensembles de ces données, avant et après échantillonnage.
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
J'ai pu exécuter xyplot (CPUUser ~ dates | Host) avec un bon effet. Cependant, plutôt que d'afficher chaque date de la semaine, j'aimerais que l'axe X représente les heures de la journée.
Essayer d'obtenir ces données dans un objet xts entraîne des erreurs telles que "order.by nécessite un objet temporel approprié"
Voici un str () du bloc de données:
'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 ...
MISE À JOUR: Juste pour référence future, j'ai décidé d'aller avec un boxplot, pour montrer à la fois la médiane et les «valeurs aberrantes».
Essentiellement:
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)
Merci
la source
xts()
parce que ladates
colonne est un facteur.str()
le data.frame.Réponses:
Voici une approche utilisant cut () pour créer les facteurs horaires appropriés et ddply () à partir de la bibliothèque plyr pour calculer les moyennes.
la source
L'agrégation fonctionne également sans utilisation
zoo
(avec des données aléatoires de 2 variables pendant 3 jours et 4 hôtes comme de JWM). Je suppose que vous avez des données de tous les hôtes pour chaque heure.Je ne suis pas tout à fait sûr si vous voulez faire la moyenne juste à l'intérieur de chaque heure ou dans chaque heure sur tous les jours. Je ferai les deux.
Le résultat ressemble à ceci:
Je ne suis pas non plus entièrement sûr du type de graphique que vous souhaitez. Voici la version simple d'un graphique pour la première variable uniquement avec des lignes de données distinctes pour chaque hôte.
Le même graphique pour les données dont la moyenne n'est que dans chaque heure.
la source
Vous pouvez extraire la
aggregate.zoo
fonction du packagezoo
: http://cran.r-project.org/web/packages/zoo/zoo.pdfCharlie
la source
aggregate.zoo
fonction, bien que j'aie utilisé lezoo
package. Vous êtes-vous assuré que votre objet était unzoo
objet en premier? La documentation que j'ai indiquée devrait vous y aider.