Hola usuario de nuestra página web, tenemos la solución a tu pregunta, continúa leyendo y la obtendrás un poco más abajo.
Solución:
R tiene múltiples formas de representar series de tiempo. Dado que está trabajando con los precios diarios de las acciones, es posible que desee considerar que los mercados financieros están cerrados los fines de semana y los feriados laborales para que los días de negociación y los días calendario no sean los mismos. Sin embargo, es posible que deba trabajar con sus series de tiempo en términos de días de negociación y días calendario. Por ejemplo, los rendimientos diarios se calculan a partir de los precios de cierre diarios secuenciales, independientemente de si interviene un fin de semana. Pero es posible que también desee generar informes basados en el calendario, como resúmenes de precios semanales. Por estas razones, el paquete xts, una extensión de zoo, se usa comúnmente con datos financieros en R. A continuación se muestra un ejemplo de cómo podría usarse con sus datos.
Suponiendo que los datos que se muestran en su ejemplo están en el marco de datos df
library(xts)
stocks <- xts(df[,-1], order.by=as.Date(df[,1], "%m/%d/%Y"))
#
# daily returns
#
returns <- diff(stocks, arithmetic=FALSE ) - 1
#
# weekly open, high, low, close reports
#
to.weekly(stocks$Hero_close, name="Hero")
que da la salida
Hero.Open Hero.High Hero.Low Hero.Close
2013-03-15 1669.1 1684.45 1669.1 1684.45
2013-03-22 1690.5 1690.50 1623.3 1659.60
2013-03-28 1617.7 1617.70 1542.0 1542.00
Aporte. Comenzaremos con el texto de la entrada que se muestra en la pregunta, ya que la pregunta no proporcionó la entrada csv:
Lines <- "Dates Bajaj_close Hero_close
3/14/2013 1854.8 1669.1
3/15/2013 1850.3 1684.45
3/18/2013 1812.1 1690.5
3/19/2013 1835.9 1645.6
3/20/2013 1840 1651.15
3/21/2013 1755.3 1623.3
3/22/2013 1820.65 1659.6
3/25/2013 1802.5 1617.7
3/26/2013 1801.25 1571.85
3/28/2013 1799.55 1542"
zoo."ts"
Las series de clases normalmente no representan índices de fecha, pero podemos crear una serie de zoológico que sí lo haga (consulte el paquete de zoológico):
library(zoo)
z <- read.zoo(text = Lines, header = TRUE, format = "%m/%d/%Y")
Alternativamente, si ya ha leído esto en un marco de datos DF
entonces podría convertirse en zoológico como se muestra en la segunda línea a continuación:
DF <- read.table(text = Lines, header = TRUE)
z <- read.zoo(DF, format = "%m/%d/%Y")
En cualquier caso arriba z
ia una serie de zoológico con un "Date"
índice de tiempo de clase. También se podría crear la serie zoo, zz
que utiliza 1, 2, 3, ... como índice de tiempo:
zz <- z
time(zz) <- seq_along(time(zz))
ts. Cualquiera de estos podría convertirse en un "ts"
serie de clases:
as.ts(z)
as.ts(zz)
El primero tiene un índice de tiempo que es el número de días desde la Época (1 de enero de 1970) y tendrá NA para los días faltantes y el segundo tendrá 1, 2, 3, ... como índice de tiempo y no NA.
Serie mensual. Típicamente "ts"
Las series se utilizan para series mensuales, trimestrales o anuales. Por lo tanto, si tuviéramos que agregar la entrada en meses, podríamos representarla razonablemente como un "ts"
serie:
z.m <- as.zooreg(aggregate(z, as.yearmon, mean), freq = 12)
as.ts(z.m)
Llegó tarde a la fiesta, pero el paquete tsbox está diseñado para realizar conversiones como esta. Para convertir sus datos en un ts
-objeto, puedes hacer:
dta <- data.frame(
Dates = c("3/14/2013", "3/15/2013", "3/18/2013", "3/19/2013"),
Bajaj_close = c(1854.8, 1850.3, 1812.1, 1835.9),
Hero_close = c(1669.1, 1684.45, 1690.5, 1645.6)
)
dta
#> Dates Bajaj_close Hero_close
#> 1 3/14/2013 1854.8 1669.10
#> 2 3/15/2013 1850.3 1684.45
#> 3 3/18/2013 1812.1 1690.50
#> 4 3/19/2013 1835.9 1645.60
library(tsbox)
ts_ts(ts_long(dta))
#> Time Series:
#> Start = 2013.1971293045
#> End = 2013.21081883954
#> Frequency = 365.2425
#> Bajaj_close Hero_close
#> 2013.197 1854.8 1669.10
#> 2013.200 1850.3 1684.45
#> 2013.203 NA NA
#> 2013.205 NA NA
#> 2013.208 1812.1 1690.50
#> 2013.211 1835.9 1645.60
Analiza automáticamente las fechas, detecta la frecuencia y hace explícitos los valores que faltan en los fines de semana. Con ts_
puede convertir los datos a cualquier otra clase de serie temporal.