Если вы хоть раз занимались анализом данных, то, скорее всего, вы сталкивались с проблемой: инструментов формата Microsoft Excel явно не хватает. Такая ситуация может возникнуть и при обработке показателей бизнеса, и при изучении статистических выборок.

Причем основания для этого могут быть абсолютно разноплановыми: слишком много информации и программа «вылетает» из-за нехватки ресурсов, произвести какую-то более-менее сложную операцию над данными не представляется возможным, так как просто недостаточно функционала, и так далее. Именно поэтому при анализе данных используют специальные языки программирования.

Самые распространенные из них в области Data Science – Python, R и SAS. Рекомендуем записаться на наш открытый курс «Введение в бизнес-аналитику», если вы хотите научиться применять R на практике.

SAS стоит несколько обособленно, так как это более узкопрофильный язык, хотя его задачи во многом совпадают с направленностью Python и R. Ниже диаграммы, которые показывают, какую долю занимают указанные выше языки в области науки о данных и предиктивной аналитики.

Во второй половине 2018 года Red Monk опубликовал результаты исследования, где была произведена оценка популярности языков по запросам на Stack Overflow и GitHub. Хорошо видно, что и R, и Python занимают очень высокие позиции. Оно и неудивительно – область Data Science и смежные области стремительно развиваются, а вместе с ними и соответствующие языки программирования.

Мы подробнее рассмотрим именно язык R, его преимущества и недостатки, а также сравним его с конкурентами. После прочтения данной статьи, если вы ранее не сталкивались с R, вы уверенно сможете решить для себя – будете ли вы использовать его в вопросах анализа данных.

Часть 1: Почему R?

Для начала стоит обозначить, почему мы будем рассматривать именно R, а не Python. Из основных причин можно выделить несколько:

Python очень широко применяется (согласно Stack Overflow, он входит в пятерку самых популярных языков программирования), про него очень много статей. Язык R таким обилием похвастаться не может. Вот список языков-лидеров:

У R есть ряд преимуществ по сравнению с Python – особенно для начинающих. Он интуитивно понятен, а потому удобен, с точки зрения написания кода. Чтобы писать программы на R, необязательно соблюдать четкую структуру – можно просто вводить последовательный набор команд, и этого будет вполне достаточно.

Язык R создавался специально для анализа данных, поэтому все конструкции синтаксиса достаточно емки и понятны. Python — более универсальный и многоцелевой язык, что, естественно, усложняет его понимание.

В языке R существует несколько совершенно потрясающих пакетов для визуализации, а в Data Science без этого делать нечего.

Работодатели в области Data Science ищут кандидатов со знанием Python и R в примерно равной степени: при анализе предложений работы по всему миру на площадке indeed.com разница по запросам «Data Scientist» Python и «Data Scientist» R очень незначительная.

Ниже приводим динамику популярности Python и R за несколько лет, а также средний размер зарплаты R- и Python программиста.

Часть 2: История

В 1976 году на свет появился язык для статистической обработки данных и для работы с графикой. Назывался он S. Разработан он был небезызвестной лабораторией Bell Labs. Был он очень удобен, но был у языка S очень серьезный недостаток – он распространялся только платно.

И тогда сотрудники статистического факультета Оклендского университета Росс Айхэка и Роберт Джентлмен разработали бесплатный аналог – язык R (название язык получил из первых букв имен его создателей).

Они стремились разработать язык, который обеспечивал бы более качественный и понятный подход к анализу данных, статистике и графическим моделям.

На первых порах R использовался преимущественно в академической и научно-исследовательской среде, но сравнительно недавно стал проникать и в мир больших корпораций.

Поэтому R — один из наиболее бурно развивающихся статистических языков, используемых в корпоративной практике.

С тех пор язык начал использоваться для решения проблем статистики, финансов, страхования, аналитики и огромного количества других задач анализа данных.

Часть 3: Pros and Cons

Несколько сильных сторон R мы уже обозначили в самом начале статьи. Однако, ниже сформулируем полный перечень причин, почему R реально удобен, практичен и функционален.

Достоинства:

1. Удобные и понятные языковые конструкции – несомненный плюс для непрофессиональных программистов.

2. Базовые статистические методы реализованы в качестве стандартных функций, что значительно повышает скорость разработки.

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

4. Для R разработано огромное количество дополнительных пакетов на любой вкус. Это может быть пакет для анализа текста (так называемое, моделирование естественного языка) или же пакет с данными из Twitter. Буквально с каждым днем пакетов становится все больше, и большинство из них собраны в одном месте – в специальном репозитории CRAN.

5. Для работы с R достаточно использовать консоль, однако для удобства разработаны несколько отличных сред разработки (IDE). Одной из самых удобных является среда Rstudio. Ее очень легко скачать с официального сайта. Вот ее интерфейс:

Недостатки:
1. Низкая производительность. Многие операции на R производятся не так эффективно, как хотелось бы (в языке Julia, например, этому уделено особое внимание и на этом поле R проигрывает своему конкуренту). Однако, все не так печально. В системе присутствуют пакеты, которые позволяют значительно повысить производительность программ.

2. Языку R присуща некоторая специфичность. Вы столкнетесь с этим, если у вас есть опыт разработки программ на других языках. Например, индексация вектора начинается не с «0», как в других языках, а с «1». Но если Вы используете R как инструмент решения своих конкретных задач – вам нечего бояться.

3. Многие действия можно выполнить несколькими способами – синтаксис не всегда очевиден. С одной стороны, это плюс, так как это повышает шанс найти способ реализовать Вашу потребность. Но есть и обратная сторона монеты – на этапе обучения это может значительно замедлить процесс, так как можно просто запутаться.

4. Процесс обучения нетривиален. Learning Curve (кривая обучения) языка R имеет далеко не самый простой вид, в отличие от пологой прямой Python, например. Но стоит помнить, что Learning Curve отображает зависимость качества программирования от опыта.

5. Как мы писали ранее, очевидный плюс – большое количество пакетов (более 7000). Все они доступны для скачивания, с этим никаких проблем нет. Но это, в свою очередь, порождает другую неприятность – далеко не все 7000 пакетов хорошо задокументированы. Однако у R много последователей, которые с удовольствием подробно делятся своими знаниями на просторах интернете и неустанно отвечают на вопросы новичков и продвинутых пользователей.

6. На русском языке документации реально мало. Это, пожалуй, самый главный недостаток из всех перечисленных, потому что проблема до сих пор не решена в полном объеме. Но если вы знаете хотя бы основы английского, то у вас точно никаких проблем не возникнет.

Эпилог

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

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

Как говорил Линус Торвальдс: «Большинство хороших программистов делают свою работу не потому, что ожидают оплаты или признания, а потому что получают удовольствие от программирования».

Выбрав язык, вы должны реально получать удовольствие от его использования. Если таких ощущений вы не испытываете или, что еще хуже, язык вызывает раздражение, то, может, вам надо задуматься и попробовать что-то другое?

Ресурсы, которые сделают ваш путь по освоению R более простым:

1. Когда в процессе обучения будете гуглить информацию, не забудьте заглянуть в блог про R — возможно, ответ там.

2. Очень много реальных тем и проблем обсуждено в еще одном интересном блоге о программировании экспертами и любителями R.

3. На этом ресурсе тоже даны многие ответы на ответы начинающих и продвинутых программистов. Кейсы разобраны не досконально, но общее понимание ситуации вы точно получите.

4. На Хабре вы вряд ли встретите азы программирования на R, но обязательно найдёте подробное описание реализации классных проектов.

5. Stackoverflow — ваш личный советник по всевозможным ошибкам. Именно этот ресурс даст вам ответ на вопрос: «А что значит эта ошибка, и как ее исправить?» Единственный недостаток для русскоязычной публики — ответы даны на английском языке.

Помните: «Час работы научит больше, чем день обучения». Невозможно учиться программировать и не применять полученные знания на реальных задачах. Пробуйте и не бойтесь тестировать свои навыки – интересных кейсов на просторах интернета сейчас действительно много.