R - Datos bursátiles de csv a xts
-
27-10-2019 - |
Pregunta
Tengo estos datos en un CSV:
Date ALICORC1 ALT ATACOBC1 AUSTRAC1 CONTINC1 BVN DNT
40886 5.8 0.1 0.9 0.28 5.45 38.2 1.11
40889 5.8 0.1 0.88 0.28 5.37 37.7 1.04
40890 5.8 0.09 0.87 0.27 5.33 37.4 0.99
40891 5.7 0.1 0.85 0.27 5.3 37.5 0.91
Estos son precios de cierre de acciones de la Bolsa de Valores de Perú, y quiero convertirlos a xts para poder encontrar la cartera óptima y otras cosas, pero no puedo encontrar la manera de convertir este CSV a xts.He comprobado la respuesta a muchas de las preguntas aquí, pero ninguna funcionó.
Algunos de los errores que tengo son:
- El índice tiene XXXX entradas incorrectas en las filas de datos
- Datos ambiguos.
¿Alguien puede ayudarme?
Solución
csv significa coma -valores-separados, por lo que el diseño que se muestra en la pregunta no es csv. Asumiremos que los datos realmente están en formato csv y no en el formato que se muestra en la pregunta. Si realmente tiene la forma que se muestra en la pregunta en lugar de csv, omita el argumento sep=","
en read.zoo
a continuación. Además, si hay otras desviaciones, es posible que deba modificar más los argumentos. Consulte ?read.zoo
y la viñeta Lectura de datos en el zoológico en el paquete del zoológico. .
Aquí usamos read.zoo
en el paquete zoo para leer los datos como un objeto zoo, z
, y luego lo convertimos a xts, x
.
Consulte R News 4/1 que trata específicamente la fecha manejo de las fechas de Excel teniendo en cuenta que es posible que tengamos que modificar ligeramente el código a continuación si se está utilizando la versión Mac de Excel (como se describe allí en la referencia).
library(xts) # this also loads zoo which has read.zoo
toDate <- function(x) as.Date(x, origin = "1899-12-30")
z <- read.zoo("myfile.csv", header = TRUE, sep = ",", FUN = toDate)
x <- as.xts(z)