trimestralizar - ingresar datos en gretl
Interpolar/extender series trimestrales a mensuales (1)
No tengo muy claro su comentario sobre el formato de columna no deseado, pero si está tratando de obtener los valores interpolados mediante una interpolación cúbica, puede considerar algo como el siguiente código
ger <- data.frame(DATE= as.Date(c("1991-01-01", "1991-04-01", "1991-07-01", "1991-10-01", "1992-01-01" )),
+ VALUE= c(470780, 468834, 466332, 472949, 480359))
DateSeq <- seq(ger$DATE[1],tail(ger$DATE,1),by="1 month")
gerMonthly <- data.frame(DATE=DateSeq, Interp.Value=spline(ger, method="natural", xout=DateSeq)$y)
merge(ger, gerMonthly, by=''DATE'', all.y = T)
La columna DATE debe estar en formato de fecha para que la interpolación pueda funcionar con valores numéricos. Usualmente usé splines cúbicos "naturales", pero hay otras opciones disponibles. Este formato muestra los valores de entrada y los resultados para que pueda verificar que la interpolación sea razonable pero puede usar gerMonthly si solo desea los resultados interpolados.
Tengo un data.frame que contiene observaciones trimestrales. Ahora quiero interpolar valores mensuales (preferido cúbico, lineal está bien). El objetivo intermedio debería ser crear un data.frame con DATE
como índice y valores perdidos para todas las observaciones mensuales.
La búsqueda en Google mostró que debería crear un data.frame vacío para todo el rango de tiempo y luego fusionarlo, pero lo que intenté hasta ahora me dio errores. Aquí está mi procedimiento; pero dado que soy un principiante, estoy abierto a cualquier sugerencia de cambio.
> str(ger)
''data.frame'': 93 obs. of 2 variables:
$ DATE : Date, format: "1991-01-01" "1991-04-01" "1991-07-01" "1991-10-01" ...
$ VALUE: num 470780 468834 466332 472949 480359 ...
> head(ger)
DATE VALUE
1 1991-01-01 470780.3
2 1991-04-01 468834.0
3 1991-07-01 466331.6
4 1991-10-01 472949.0
5 1992-01-01 480359.2
6 1992-04-01 476744.5
emptyIndex <- seq(ger[1, ''DATE''], tail(ger[, ''DATE''], 1), by=''1 month'')
gerMonthly <- data.frame(DATE = emptyIndex, VALUE = NA)
merge(ger, gerMonthly, by=''DATE'', all.y = T)
Esto es lo más cercano que tengo, pero me da un formato de columna no deseado: seguramente hay una manera más limpia de obtener lo que quiero. Finalmente, dado el formato, ¿cuál sería la forma más limpia de obtener la serie temporal interpolada?
DATE VALUE.x VALUE.y
1 1991-01-01 470780.3 NA
2 1991-02-01 NA NA
3 1991-03-01 NA NA
4 1991-04-01 468834.0 NA
5 1991-05-01 NA NA
6 1991-06-01 NA NA