Интернет, компьютеры, софт и прочий Hi-Tech

Подписаться через RSS2Email.ru

Программируем на R: как перестать бояться и начать считать

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

Возможно, вам нужно посчитать какие-нибудь итоги для отчета по работе, или, хуже того, построить графики. А может, вы хотите доказать своему шефу, что ваш вклад привел к достоверному росту показателей продаж. Или же вас всерьез заинтересовала проблема глобального потепления, и теперь вы сравниваете погодные показатели с архивными данными времен вашего детства. Так или иначе, одним калькулятором и бумагами тут не обойтись.

Большинство людей хотя бы немного знакомы с программами для обработки электронных таблиц — такими, как Microsoft Excel или Open Calc. Они вполне пригодны для простых вычислений. Для более сложной работы придется воспользоваться специализированным статистическим софтом. В этой статье мы расскажем об одном из популярнейших решений — языке программирования R.

С чего начать?

R — язык программирования с интерфейсом типа командной строки. Да-да, совсем как DOS на заре компьютерной эры. Но это не должно вас настораживать: R — современный многофункциональный продукт, а строковый интерфейс лишь придает гибкости его работе. Вспомните, сколько кнопок нужно нажать для того, чтобы построить простейший график (скажем, ряд точек от 1 до 10) в том же Excel’е. В R это делается просто и изящно:

plot(1:10)

Для начала работы, необходимо скачать саму программу — это делается бесплатно на сайте r-project.org. Затем я бы советовал установить продвинутую оболочку, обладающую рядом дополнительных функций — RStudio (rstudio.com). Она сделает работу еще более простой и приятной, и, кстати, также совершенно бесплатна.

Обработка данных в R производится с помощью функций, которые всегда записываются с круглыми скобками, например: plot(), lm() и так далее. Внутри скобок записываются аргументы функции — данные для обработки и различные параметры, уточняющие, как именно следует эту обработку производить. Нужную функцию и ее особенности легко найти в разделе «Help» («Помощь») — к сожалению, только на английском языке.

Для написания программы создайте новый скрипт. Клавишами Ctrl+R можно запускать выделенную часть кода: результат вы увидите на рабочей панели. В принципе, писать нужные команды можно прямо в ней, но для удобства сохранения лучше создать отдельный файл. Программа сохранит его в текстовом виде с расширением *.R.

Объекты R

Для любых расчетов нужны исходные данные. В R они бывают различных типов, но чаще всего используются строки (последовательности значений) и таблицы. Простейшая последовательность называется вектором (vektor): она включает числовые, текстовые или логические (TRUE, FALSE) значения. Сделать вектор очень просто:

a <- c(1,2,3,4,5,6) # Числовой вектор
b = c("Василий Иванович","Петька") # Текстовый вектор

Знаки <- и = означают, что мы записываем ту или иную последовательность в объект. Объекты обозначаются латинскими буквами или их сочетаниями (язык чувствителен к регистру). Ну а функция c(), как вы уже догадались, служит для создания векторов.

Данные со строками и колонками можно создавать с помощью функций matrix() (матрицы) и data.frame() (таблицы значений). Матрицы могут содержать значения только одного типа (числа или текст). Они делаются из векторов:

my.matrix <- matrix(a,ncol=2,nrow=3,byrow=TRUE)

Мы преобразовали наш вектор из 6 циферок (a) в таблицу с двумя колонками (ncol=2) и тремя строками (nrow=3). Аргумент «byrow» означает, что таблицу нужно заполнять по строкам. Что мы имеем в итоге:

1 2
3 4
5 6

Как видите, ничего сложного.

Арифметические действия

Векторы и матрицы можно складывать (+), вычитать (-), умножать (*) и делить (/) друг на друга. Если один из векторов окажется длиннее другого, более короткий будет «зациклен», например:

a / c(2,1)

даст такой результат:

0.5 2
1.5 4
2.5 6

Если длина меньшего вектора не кратна длине большего, возникнет предупреждение.

Арифметические действия с матрицами можно производить лишь в том случае, если их размеры одинаковы:

my.matrix * matrix(c(2,4,2,4,1,2),ncol=2,byrow=FALSE)

Попробуйте догадаться, каким будет результат, а затем посчитайте в программе. Ну как, угадали?

Делаем сложные таблицы

В таблицах обычно присутствуют и текстовые, и численные колонки (например, имена клиентов и объем продаж каждому из них). Для их создания воспользуемся функцией data.frame():

my.frame <- data.frame(N=a[1:2], M=b)

В полученном объекте my.frame будет две колонки — числовая N и текстовая M. C помощью квадратных скобок можно указать, какие элементы строки или таблицы нам нужны. В данном случае, от вектора a мы берем только первые два элемента, а вектор b взят целиком (как мы помним, в нем тоже два элемента). Похожим образом можно выбрать нужную часть таблицы:

my.frame[,1] # Первая колонка таблицы
my.frame[,"N"] # Колонка с названием «N» — то же самое
my.frame[1,] # Первая строка таблицы
my.frame[2,1] # Вторая строка первой колонки.

Думаю, принцип ясен.

Кстати, таблицы необязательно создавать в R — можно импортировать их из того же Excel’я. Проще всего вначале сохранить файл в текстовом формате *.csv «с разделителями-запятыми» (на самом деле разделителем будет точка с запятой — «;»).

my.object <- read.table("MYOBJECT.csv", h=TRUE, sep=";", dec=",")

Параметр h=TRUE означает, что в таблице присутствует «шапка» с именами колонок. Понятное дело, sep обозначает используемый разделитель ячеек, ну а dec — десятичный разделитель. В России обычно используют запятую, но в R нужно применять точку.

Теперь вы знаете, как создать или загрузить данные в R и как произвести простейшую обработку данных. Остальное в ваших руках! В R присутствует множество встроенных функций, а еще можно загружать дополнительные пакеты или создавать функции самостоятельно. Все это позволяет без особых проблем провести вычисления любой сложности.

Автор: a-marko, специально для xBB.uz, 28.11.2014


Предыдущие публикации:

Биржа долевых инвестиций SIMEX.

Последнее редактирование: 2014-11-28 04:53:52

Метки материала: язык программирования, r, практика программирования, вычисления, язык программирования r, статистический софт, программирование

Оставьте, пожалуйста, свой комментарий к публикации

Представиться как     Антибот:
   

Просьба не постить мусор. Если вы хотите потестить xBB, воспользуйтесь кнопкой предварительного просмотра на панели инструментов xBBEditor-а.


© 2007-2017, Дмитрий Скоробогатов.
Разрешается воспроизводить, распространять и/или изменять материалы сайта
в соответствии с условиями GNU Free Documentation License,
версии 1.2 или любой более поздней версии, опубликованной FSF,
если только иное не указано в самих материалах.