1 votos

Cómo convertir datos semanales en mensuales en r (o en Julia)

Dispongo de series semanales sobre datos del índice de riesgo financiero como las siguientes:

FECHA NFCIRISK

1/8/1971 0.58

1/15/1971 0.61

......

10/6/2017 -0.88

10/13/2017 -0.89

10/20/2017 -0.89

10/27/2017 -0.89

Quiero convertirlos en una serie mensual (media de cuatro semanas) y he intentado usar lo siguiente en r pero no ha funcionado.

library(xlsx)

biblioteca(xts)

month.end <- endpoints(MyData, on = "months")

monthly <- period.apply(MyData, INDEX = month.end, FUN = mean)

cabeza(mensual)

Podría alguien por favor ayudarme si hay alguna otra forma que pueda probar ya sea en r o en Julia. Gracias y apreciando su respuesta.

1voto

Ulf Lindback Puntos 5235

Puede intentar lo siguiente :

Utilice el paquete "Quandl" en R. El cual le permite descargar datos mensuales, trimestrales, semanales y diarios directamente utilizando un solo argumento. También proporciona los datos del índice.

¡¡Espero que esto te ayude!!

1voto

mattbasta Puntos 296

Ver el puntos finales en R.

Devuelve un vector numérico correspondiente a la última observación en cada periodo especificado por on, con un cero añadido al principio del vector, y el índice de la última trama en x al final.

Los valores válidos para el argumento on incluyen: "us" (microsegundos), "microsegundos", "ms" (milisegundos), "milisegundos", "secs" (segundos), "segundos", "mins" (minutos), "minutos", "horas", "días", "semanas", "meses", "trimestres" y "años".

0voto

BigCanOfTuna Puntos 210

Estos cálculos se pueden realizar mediante tapply que está en la base R.

Supongamos que sus datos se almacenan en un marco de datos MyData La primera columna son las marcas de tiempo, la segunda los valores:

MyData <- read.table(text=
"DATE NFCIRISK
01/8/1971 0.58
01/15/1971 0.61
10/6/2017 -0.88
10/13/2017 -0.89
10/20/2017 -0.89
10/27/2017 -0.89",
sep = " ", stringsAsFactors = FALSE, header = TRUE)

MyData[[1]] <- as.Date(MyData[[1]], "%m/%d/%Y")
MyData

##         DATE NFCIRISK
## 1 1971-01-08     0.58
## 2 1971-01-15     0.61
## 3 2017-10-06    -0.88
## 4 2017-10-13    -0.89
## 5 2017-10-20    -0.89
## 6 2017-10-27    -0.89

Entonces puedes escribir simplemente:

tapply(MyData[[2]], format(MyData[[1]], "%Y-%m"), mean)

y obtener

1971-01  2017-10 
 0.5950  -0.8875

0 votos

Hola Enrico: funciona perfectamente. Gracias y apreciando.

Finanhelp.com

FinanHelp es una comunidad para personas con conocimientos de economía y finanzas, o quiere aprender. Puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X