R - данные фондового рынка от CSV до XTS - PullRequest
2 голосов
/ 18 февраля 2012

У меня есть эти данные в 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

Это цены закрытия акций Перуанской фондовой биржи, и я хочу преобразовать их в xts, чтобы найти оптимальный портфель и другие материалы, но я не могу найти способ конвертировать этот CSV в xts. Я проверил ответ на многие вопросы здесь, но ни один из них не сработал.

Некоторые из ошибок, которые я получил:

  • Индекс содержит XXXX неверных записей в строках данных
  • Неоднозначные данные.

Кто-нибудь может мне помочь?

1 Ответ

5 голосов
/ 18 февраля 2012

csv обозначает запятую -separated-values, поэтому показанная в вопросе схема не является csv. Мы будем предполагать, что данные действительно в форме CSV, а не в форме, показанной вопрос. Если оно действительно в форме, показанной в вопросе, а не в csv, пропустите аргумент sep="," в read.zoo ниже. Также, если есть другие отклонения, вам может понадобиться изменить аргументы дальше. См. ?read.zoo и Чтение данных в зоопарке виньетка в пакете зоопарка.

Здесь мы используем read.zoo в пакете zoo для считывания данных как объекта zoo, z, а затем преобразуем его в xts, x.

См. R News 4/1 , в котором конкретно рассматривается обработка дат в датах Excel, отмечая, что нам может потребоваться немного изменить приведенный ниже код, если используется версия Excel для Mac (как описано в ссылке ).

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)
...