Domanda

Sono un principiante in R.

Ho i timestamp in un elenco in questo stile:

 [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"

Ora voglio tracciare un grafico che mi mostra quanti eventi si verificano a gennaio, febbraio e così via.

Ogni timestamp rappresenta un evento e potrebbero esserci mesi senza un evento (che dovrebbe essere mostrato come 0)

È stato utile?

Soluzione

Metterei il vettore dei tempi in una colonna di un data.rame. I dati di esempio seguenti hanno un migliaio di timestamp con un tempo casuale tra l'ora corrente e tra due anni.

dat = data.frame(timestamp = Sys.time() + sort(round(runif(1000, (24*3600), (2*365*24*3600)))))

Il prossimo passo è creare una nuova colonna che identifichi in quale mese e anno si trova il timestamp:

dat$month = strftime(dat$time, "%b")
dat$year = strftime(dat$time, "%Y")

Ora possiamo contare i timestamp al mese per ogni anno usando count dal plyr pacchetto.

library(plyr)
timestamps_month = count(dat, vars = c("month","year"))

E creare l'istogramma con ggplot2:

library(ggplot2)
ggplot(data = timestamps_month) + geom_bar(aes(x = month, y = freq, fill = year), stat="identity", position = "dodge")

Guarda questo post per un esempio di come appare la trama risultante:

Come creare istogramma in R con i dati temporali CSV?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top