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)

Était-ce utile?

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?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top