вторник, 24 ноября 2015 г.

Работа с финансовыми временными рядами в R. Часть 5. Импорт данных в формате Comma Separated Value (.csv) в R


Скачивая котировки с финансовых ресурсов, вы обычно получаете их в формате .csv, который представляет собой текстовый файл, в котором значения данных отделяются друг от друга запятой. С такими файлами можно работать как в R, так и в Excel. Самый простой способ импортировать данные из csv в R - воспользоваться функцией read.csv().
Для примера я взял месячные цены закрытия индексов РТС и ММВБ и сохранил их в файлах RTSI.csv и MICEX.csv. Каждый файл содержит два столбца - дату и цену закрытия. Например, так выглядят первые шесть строк файла RTSI.csv:

X.DATE. X.CLOSE.
01/01/13  1622.13
02/01/13  1534.41
03/01/13  1460.04
04/01/13  1407.21
05/01/13  1331.43

Обратите внимание, что первая строка содержит имена столбцов. Теперь импортируем данные по индексу РТС в R:

> rtsi.df = read.csv("/home/alexnov/work/RTSI.csv",header = TRUE, stringsAsFactors = FALSE)
Аналогично поступим с данными по ММВБ:

> micex.df = read.csv("/home/alexnov/work/MICEX.csv",header = TRUE, stringsAsFactors = FALSE)
Замечания:
1. Аргумент header = TRUE показывает, что имена столбцов находятся в первой строке файла.
2. Аргумент stringsAsFactors = FALSE указывает функции, что необходимо обрабатывать даты как символьные данные и не конвертировать их в факторные переменные.

Данные импортируются в  rtsi.df и gzpm.df, которые представляют собой объекты, принадлежащие к классу data.frame.

> class( rtsi.df)
[1] "data.frame"

Объект data.frame представляет собой прямоугольную матрицу с данными в столбцах. Имена столбцов:

> colnames(rtsi.df)
[1] "X.DATE."  "X.CLOSE."

А первые шесть строк файла:

> head(rtsi.df)
  X.DATE. X.CLOSE.
1 01/01/13  1622.13
2 02/01/13  1534.41
3 03/01/13  1460.04
4 04/01/13  1407.21
5 05/01/13  1331.43
6 06/01/13  1275.44

Данные в столбцах могут быть разных типов. Столбец X.DATE содержит информацию о данных в символьном виде, а столбец X.CLOSE содержит цены закрытия в виде числовых данных.

> class(rtsi.df$X.DATE)
[1] "character"
> class(rtsi.df$X.CLOSE)
[1] "numeric"


Представление данных временных рядов в объекте data.frame имеет свой недостаток. Информацию о дате невозможно эффективно использовать. Вы не можете извлекать наборы данных на базе определенного временного диапазона. Например, чтобы извлечь данные о ценах за первые 6 месяцев 2014 года, необходимо проделать следующие операции:

> which(rtsi.df$X.DATE=="01/01/14")
[1] 13
> which(rtsi.df$X.DATE=="06/01/14")
[1] 18
> rtsi.df[13:18,]
   X.DATE. X.CLOSE.
13 01/01/14  1301.02
14 02/01/14  1267.27
15 03/01/14  1226.10
16 04/01/14  1155.70
17 05/01/14  1295.75
18 06/01/14  1366.08

Кроме того, метод plot для объектов data.frame по умолчанию не использует информацию о датах для оси х. Например, приведенный ниже вызов plot() приведет к появлению сообщения об ошибке.
> plot(rtsi.df$X.DATE, rtsi.df$X.CLOSE, type="l")

Комментариев нет:

Отправить комментарий