Скачивая котировки с финансовых ресурсов, вы обычно получаете их в формате .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
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"
[1] "data.frame"
Объект data.frame представляет собой прямоугольную матрицу с данными в столбцах. Имена столбцов:
> colnames(rtsi.df)
[1] "X.DATE." "X.CLOSE."
[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.
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"
[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
[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
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")
Комментариев нет:
Отправить комментарий