Comment obtenir un diagramme à barres «événements par mois» dans R
-
29-10-2019 - |
Question
Je suis un débutant en R.
J'ai des horodatages dans une liste dans ce style:
[1] "2011-10-04 17:23:28 CEST" "2011-10-04 17:26:13 CEST" "2011-10-05 16:17:34 CEST" "2011-10-07 09:59:37 CEST"
Maintenant, je veux tracer un graphique qui me montre combien d'événements se produisent en janvier, février et ainsi de suite.
Chaque horodatage représente un événement et il peut y avoir des mois sans événement (qui devrait être affiché comme 0)
La solution
Je mettrais le vecteur des temps dans une colonne d'un data.frame.Les données d'exemple ci-dessous ont mille horodatages avec un temps aléatoire entre l'heure actuelle et deux ans à partir de maintenant.
dat = data.frame(timestamp = Sys.time() + sort(round(runif(1000, (24*3600), (2*365*24*3600)))))
L'étape suivante consiste à créer une nouvelle colonne qui identifie le mois et l'année de l'horodatage:
dat$month = strftime(dat$time, "%b")
dat$year = strftime(dat$time, "%Y")
Nous pouvons maintenant compter les horodatages par mois pour chaque année en utilisant count
du package plyr
.
library(plyr)
timestamps_month = count(dat, vars = c("month","year"))
Et créez l'histogramme avec ggplot2:
library(ggplot2)
ggplot(data = timestamps_month) + geom_bar(aes(x = month, y = freq, fill = year), stat="identity", position = "dodge")
Voir cet article SO pour un exemple de la façon dont le tracé résultant ressemble à:
Comment créer un histogramme dansR avec des données horaires CSV?