tiempo serie rpubs pronosticos multivariadas mensual funcion diaria correlograma r dataframe time-series

rpubs - Transformar una serie de tiempo en un marco de datos y volver



series de tiempo mensual en r (1)

Aquí hay dos formas. La primera forma crea dimnames para la matriz que se va a crear y luego enruta los datos en una matriz, los transpone y los convierte en marcos de datos. La segunda forma crea una lista que consiste en variables de año y mes y se usa de forma simultánea en esa conversión posterior a marco de datos y adición de nombres.

# create test data set.seed(123) tt <- ts(rnorm(12*5, 17, 8), start=c(1981,1), frequency = 12)

1) matriz . Esta solución requiere que tengamos años consecutivos enteros

dmn <- list(month.abb, unique(floor(time(tt)))) as.data.frame(t(matrix(tt, 12, dimnames = dmn)))

Si no nos importan los buenos nombres, es solo como as.data.frame(t(matrix(tt, 12))) .

2) tapply . Una solución más general utilizando tapply es:

tapply(tt, list(year = floor(time(tt)), month = month.abb[cycle(tt)]), c)

Si no nos importan los nombres, podemos reemplazar month.abb[cycle(tt)] con solo cycle(tt) .

Nota: Para invertir esto, suponga que DF es cualquiera de las soluciones de marcos de datos anteriores. Entonces intenta:

ts(c(t(DF)), start = 1981, freq = 12)

La salida de una serie de tiempo se ve como un marco de datos:

ts(rnorm(12*5, 17, 8), start=c(1981,1), frequency = 12) Jan Feb Mar Apr May Jun Jul ... 1981 14.064085 21.664250 14.800249 -5.773095 16.477470 1.129674 16.747669 ... 1982 23.973620 17.851890 21.387944 28.451552 24.177141 25.212271 19.123179 ... 1983 19.801210 11.523906 8.103132 9.382778 4.614325 21.751529 9.540851 ... 1984 15.394517 21.021790 23.115453 12.685093 -2.209352 28.318686 10.159940 ... 1985 20.708447 13.095117 32.815273 9.393895 19.551045 24.847337 18.703991 ...

Sería útil transformarlo en un marco de datos con columnas Jan, Feb, Mar ... y filas 1981, 1982, ... y luego volver. ¿Cuál es la forma más elegante de hacer esto?