Код
#статьи

Язык программирования R: ничего лишнего, только работа с данными

Правило 35: если в мире что-то существует, для этого уже придумали свой язык программирования. И работа с данными не исключение.

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

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

Это важный момент: R разработан статистиками для статистиков — в нём уже есть популярные статистические тесты, методы анализа данных, удобные инструменты для построения графиков. Такие возможности есть далеко не во всех популярных языках общего назначения.

А специализированный язык R уверенно отвоёвывает себе место под солнцем: с 18-го места рейтинга TIOBE в 2016 году он поднялся на 8-ю строчку в январе 2021. Установить интерпретатор и рабочее окружение можно в любую современную операционную систему — MacOS, Linux, Windows.

Что под капотом

R — интерпретируемый объектно-ориентированный язык программирования. Что это значит? Функции или таблицы для него — это объекты, которые относятся к определённому классу (типу данных), а готовая программа исполняется сразу — строчка за строчкой. Компилировать код в исполняемый файл перед запуском не надо.

Синтаксис языка R прост и включает минимальный набор примитивных типов данных: символьные, числовые, логические и комплексные. Примитивные типы объединяются в более сложные. Например, тип вектор — это, по сути, список из нескольких объектов (чисел, строк и других). Числовые переменные могут принимать и особые значения: NaN (not a number — не число), Inf (infinity — бесконечность) и NA (not available — недоступно).

Самая популярная команда в R — чтение файла, потому что надо постоянно открывать и исследовать датасеты. Вот как она выглядит:

data <- read.csv("input.csv", sep = ',')

Здесь data — переменная, в которую сохранится файл, <— — оператор присвоения, read.csv — функция для чтения файлов формата .csv, а атрибут sep (запятая) — тип разделителя между данными в исходном файле. Он необходим, чтобы таблица отображалась правильно.

Кроме интерфейса командной строки, для R существуют графические пользовательские интерфейсы и интерактивные инструменты: они делают работу легче и приятнее, доступны бесплатно и распространяются под свободной лицензией GNU GPL. Вот самые популярные:

  • Среда разработки RStudio. Её можно установить на Windows, Linux и MacOS. В RStudio есть наглядная подсветка кода R, удобная навигация по тексту программы, история правок, сортировка табличных данных по столбцам, отображение графиков в отдельном окне — в общем, всё, что должно быть в нормальной среде разработки.
Интерфейс RStudio для Windows: есть отдельные области для написания кода, отображения переменных и графиков
  • Веб-интерфейс Jupyter Notebook. Это приложение-блокнот для создания и обмена программами на R и множестве других языков, позволяющих работать с данными. Он открывается в браузере, одновременно отображая код и графические элементы — рисунки, уравнения.
  • Дистрибутив Anaconda — целая коллекция популярных библиотек и программ для удобной работы с данными на языке R. Кстати, тут есть и версия для Python, которая удобно устанавливается из одного файла и включает в себя RStudio, веб-интерфейс Jupyter Notebook и много других приложений.

Что можно сделать с помощью R

  • Обработать, очистить и преобразовать данные для исследования. Например, вы хотите посмотреть, сколько в среднем пользователей скачали ваше мобильное приложение за каждый летний и осенний месяц. R позволяет исключить из графика зиму и осень и сгруппировать их по месяцам для дальнейших подсчётов.
  • Провести статистические тесты. Допустим, вы хотите узнать, различается ли средняя продолжительность жизни мужчин и женщин. Для этого можно запустить t-тест — его результаты покажут, есть ли статистически значимые различия между данными.
  • Выполнить разведочный анализ. Данные необходимо проверять на нормальность, потому что многие статистические методы (например, тот же
    t-тест) требуют нормального распределения в исходниках. Нормальное распределение предполагает, что бóльшая часть данных группируется около среднего значения, а остальных значений гораздо меньше. Такое распределение часто встречается в жизни: людей среднего роста в мире больше всего, а высоких и низких — мало. В R есть инструменты проверки нормальности с помощью графиков и тестов.
Варианты нормального распределения: бóльшая часть данных группируется вокруг среднего значения.
  • Работать с таблицами разных форматов. Эта возможность пригодится аналитикам: например, чтобы объединить данные из нескольких таблиц .csv и .xlsx и обрабатывать их как один файл.
  • Нарисовать интерактивный график и отрегулировать его параметры — значения по осям и тому подобное.
  • Создать интерактивное приложение. Результат — симпатичная веб-страница с графиком, фильтрами и сортировкой данных. Её можно отправить коллегам или опубликовать как часть статьи. Так отслеживают заболеваемость коронавирусом по всему миру (код открыт и доступен на GitHub).
  • Анализировать регрессионные модели. Регрессионный анализ — это метод, который позволяет выявить отношения между зависимой и независимой переменными. Например, аналитик хочет понять, почему в некоторых магазинах сети продажи выше, чем в других. Зависимой переменной будет объём продаж, а независимых несколько — это доход и возраст жителей района, расстояние от магазина до автобусных остановок. В результате можно выяснить, какой из этих факторов больше других влияет на выручку магазинов.

Многие из этих функций подключаются с помощью библиотек. В стандартном пакете их около 20: например, stat для статистических тестов и graphics для простой визуализации. Дополнительные библиотеки можно скачать с сервера CRAN — в 2020 году их там было больше 16 тысяч. Среди них plotly для интерактивных графиков и tidyr для очистки данных — она помогает заполнить пропущенные значения в столбцах и сделать так, чтобы каждый столбец соответствовал только одной переменной.

Сравнение R с другими инструментами для работы с данными

Основные конкуренты R — это инструменты анализа данных без кода — Excel, Google Sheets, SPSS, Tableau, Power BI и другие. А также языки программирования — Python и Julia.

R, Python и Julia

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

Сторонники Julia прочат своему фавориту славу убийцы Python. Но пока это довольно молодой язык — у него не такое сильное сообщество, гораздо меньше готовых рецептов, библиотек и документации — особенно на русском.

Кстати, на Reddit есть интересный тред, а у нас — целая статья по выбору языка программирования для аналитики.

Язык R и готовые программные пакеты

Сила R и других языков программирования — в их гибкости. У программ типа Excel и Tableau есть ограничения: если вам не хватает функций, придётся ждать милости разработчиков, а специалист по R достаточно быстро может сделать кастомные отчёты и графики, сопоставить нужные данные. Ещё один плюс — язык программирования позволяет полноценно работать с Big Data и строить модели машинного обучения.

Преимущества R

  • Неограниченный набор функций для анализа данных — благодаря подключению библиотек.
  • Возможность работы с огромными таблицами и базами данных, которые не потянут программы.
  • Продвинутые настройки интерфейса: графический пользовательский или интерфейс командной строки.
  • Полностью бесплатная экосистема — компоненты распространяются бесплатно под лицензией GNU. Excel стоит 69,99 доллара в год, SPSS — 3200 долларов за бессрочную лицензию, Tableau для компаний — от 70 долларов за пользователя в месяц.
  • Доступен для большинства операционных систем: Windows, macOS, FreeBSD, Solaris, разных версий Unix и Linux.
  • Богатые возможности визуализации: можно создавать приложения, строить графики разных типов, в том числе интерактивные, а также редактировать их элементы. Например, график на основе известного датасета iris, показывающий плотность лепестков и чашелистиков в зависимости от вида ирисов.

Есть ли у языка R минусы

Минусы R — относительные:

  • Документация и большинство источников — только на английском языке. Хотя появляется всё больше русскоязычных источников — уже есть отдельный раздел на «Хабре», а ответы на частые вопросы можно найти на Stack Overflow.
  • Человеку без опыта программирования и знания основ статистики будет сложно. Но достаточно освоить базовые понятия: среднее, мода, медиана, выборка, нормальное распределение. Например, по книге «Статистика и котики» В. Савельева.
  • Узкая сфера применения: он идеален для анализа данных, но для разработки программ не подходит. Но в этом и его сила. Настоящий UNIX-way и находка для учёных, журналистов, дата-сайентистов, аналитиков — всех, кто хочет работать с данными.

Резюмируем

R — это не просто язык программирования, а целая инфраструктура и специализированная среда для работы с данными. В неё уже встроены многие статистические методы и варианты визуализации.

Нейросети для работы и творчества!
Хотите разобраться, как их использовать? Смотрите конференцию: четыре топ-эксперта, кейсы и практика. Онлайн, бесплатно. Кликните для подробностей.
Смотреть программу
Понравилась статья?
Да

Пользуясь нашим сайтом, вы соглашаетесь с тем, что мы используем cookies 🍪

Ссылка скопирована