tiempo temporales rpubs periodograma moviles medias diarias cruzada correlaciĆ³n r datetime ggplot2

temporales - Divida los datos de las series de tiempo en intervalos de tiempo(digamos una hora) y luego trace la cuenta



series de tiempo diarias en r (1)

Parece que desea utilizar el cut para averiguar cuántos valores ocurren dentro de una hora.

En general, es útil si puede proporcionar algunos datos de muestra. Aquí hay algunos:

set.seed(1) # So you can get the same numbers as I do MyDates <- ISOdatetime(2012, 1, 1, 0, 0, 0, tz = "GMT") + sample(1:27000, 500) head(MyDates) # [1] "2012-01-01 01:59:29 GMT" "2012-01-01 02:47:27 GMT" "2012-01-01 04:17:46 GMT" # [4] "2012-01-01 06:48:39 GMT" "2012-01-01 01:30:45 GMT" "2012-01-01 06:44:13 GMT"

Puede usar la table y cut (con el argumento breaks="hour" (vea ?cut.Date para obtener más información)) para encontrar las frecuencias por hora.

MyDatesTable <- table(cut(MyDates, breaks="hour")) MyDatesTable # # 2012-01-01 00:00:00 2012-01-01 01:00:00 2012-01-01 02:00:00 2012-01-01 03:00:00 # 59 73 74 83 # 2012-01-01 04:00:00 2012-01-01 05:00:00 2012-01-01 06:00:00 2012-01-01 07:00:00 # 52 62 64 33 # Or a data.frame if you prefer data.frame(MyDatesTable) # Var1 Freq # 1 2012-01-01 00:00:00 59 # 2 2012-01-01 01:00:00 73 # 3 2012-01-01 02:00:00 74 # 4 2012-01-01 03:00:00 83 # 5 2012-01-01 04:00:00 52 # 6 2012-01-01 05:00:00 62 # 7 2012-01-01 06:00:00 64 # 8 2012-01-01 07:00:00 33

Finalmente, aquí hay una gráfica de MyDatesTable objeto MyDatesTable :

plot(MyDatesTable, type="l", xlab="Time", ylab="Freq")

cut puede manejar un rango de intervalos de tiempo. Por ejemplo, si desea tabular cada 30 minutos, puede adaptar fácilmente el argumento de breaks para manejar eso:

data.frame(table(cut(MyDates, breaks = "30 mins"))) # Var1 Freq # 1 2012-01-01 00:00:00 22 # 2 2012-01-01 00:30:00 37 # 3 2012-01-01 01:00:00 38 # 4 2012-01-01 01:30:00 35 # 5 2012-01-01 02:00:00 32 # 6 2012-01-01 02:30:00 42 # 7 2012-01-01 03:00:00 39 # 8 2012-01-01 03:30:00 44 # 9 2012-01-01 04:00:00 25 # 10 2012-01-01 04:30:00 27 # 11 2012-01-01 05:00:00 33 # 12 2012-01-01 05:30:00 29 # 13 2012-01-01 06:00:00 29 # 14 2012-01-01 06:30:00 35 # 15 2012-01-01 07:00:00 33

Actualizar

Ya que estabas tratando de trazar con ggplot2 , aquí hay un enfoque (no estoy seguro de que sea el mejor, ya que usualmente uso los gráficos de la base R cuando lo necesito).

Cree un data.frame de data.frame de la tabla (como se demostró anteriormente) y agregue una variable de "grupo" ficticia y data.frame lo siguiente:

MyDatesDF <- data.frame(MyDatesTable, grp = 1) ggplot(MyDatesDF, aes(Var1, Freq)) + geom_line(aes(group = grp))

Acabo de tener un archivo de datos con una columna de series de tiempo:

''2012-02-01 17:42:44'' ''2012-02-01 17:42:44'' ''2012-02-01 17:42:44''

... Quiero dividir los datos de modo que tenga un recuento en la parte superior de la hora. Decir:

''2012-02-01 17:00:00'' 20 ''2012-02-01 18:00:00'' 30

El ''20'' y el ''30'' representan el número de entradas de series de tiempo para ese período. Y quiero poder graficar el tiempo frente a ese ''recuento''. ¿Cómo puedo hacer esto con R?

Aquí está mi gráfica de línea actual.

library(ggplot2) req <- read.table("times1.dat") summary(req) da <- req$V2 db <- req$V1 time <- as.POSIXct(db) png(''time_data_errs.png'', width=800, height=600) gg <- qplot(time, da) + geom_line() print(gg) dev.off()