Как выучить R

Кажется, что все ресурсы уже известны, но откуда тогда миллион вопрос типа «как научиться R?» в интернете?

Этот материал — перевод статьи Тал Галили, доступной на сайте R-bloggers по ссылке: https://www.r-bloggers.com/how-to-learn-r-2/

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

Поэтому R-Bloggers в сотрудничестве с DataCamp подготовили для вас путеводитель по изучению R. В каждой секции вы найдёте лучше ресурсы и инструменты чтобы начать и сохранить намерение продолжать учиться — набор различных материалов: документации, онлайн курсов, книг и много другого.

Этот учебный план, как и сам язык R, весьма динамичен. Наша задача — постоянно дополнять и улучшать список ресурсов, чтобы вы могли получить лучший доступный учебный опыт. Если у вас есть идеи о том, как улучшить этот учебный план — пожалуйста, поделитесь ими по адресу tal.galili@gmail.com

Учебный план

Для начала: основы R

image02

Лучший способ выучить R — работать с R. Если вы только начинаете осваивать язык, то обратите внимание на это бесплатное введение в R от DataCamp (первая глава – бесплатная) и его продолжение (по подписке). Оба курса интерактивны, доступны вам в любое время, в удобном вам темпе и любимом браузере. Подсказки, к которым можно обратиться непосредственно во время выполнения упражнений, помогут не застрять на одном месте.

Другой бесплатный интерактивный курс, «Попробуй R», доступен в школе программирования издательства O’reilly. Интерактивный курс, работающий без интернета — swirl, пакет R, который сделает путь к освоению языка весёлым и простым. Вы можете пройти курс swirl (1) установив пакет в R, и (2) выбрав его в библиотеке курсов. Если ничего устанавливать не хочется, можно воспользоваться онлайн версией Swirl.

Также очень хорошие курсы доступны на edX и Coursera – они помогут освоить основы программирования на R. На edX посмотрите восьмичасовой курс «Введение в программирование на R» от Microsoft – он покрывает основы и базовый синтаксис языка. Есть также популярный курс «Программирование на языке R» от университета Джона Хопкинса, ищите его на Coursera. Мы очень рекомендуем оба!

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

Организация рабочего места

image05

Скачать R можно из CRAN (Comprehensive R Archive Network). Доступны версии для Linux, Mac и Windows.

Когда R установлен, вы можете выбирать – работать с базовой консолью, или использовать интегрированную среду разработки (integrated development environment, IDE). RStudio – самая популярная на сегодняшний день IDE для R и поддерживает отладку программы (дебаггинг), управление рабочим пространством, построение графиков и многое другое (не забудьте ознакомиться с горячими клавишами RStudio).

Альтернативы RStudio – Architect, и основанные на Eclipse IDE для R. Если вам больше по душе графический интерфейс, то присмотритесь к R-commander (также известен как Rcmdr) или Debucer.

Пакеты R

image04

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

Многие (но не все) пакеты R собраны и доступны в CRAN, сети серверов по всему миру, на которых хранятся идентичные, самые актуальные версии кода и документации для R. Эти пакеты легко установить непосредственно в R, используя функцию install.packages. На сайте CRAN также есть список задач, где для каждого пункта дан список подходящих пакетов – к примеру, задача построения временных рядов.

Кроме CRAN, есть хранилище bioconductor, в котором хранятся пакеты для анализа высоконагруженных геномных данных – также как, например, на github и bitbucket. Установить пакеты из этих хранилищ можно с использованием пакета devtools.

Найти подходящий пакет может быть тяжело, но, к счастью, поиск в CRAN, на github и bitbucket становится проще с сайтами Rdocumentation и inside-R. И всегда можно подсмотреть в этот список полезных пакетов для R.

В заключение: начав работать с R, вы быстро почувствуете головную боль из-за зависимостей пакетов. Столкнувшись с проблемой – воспользуйтесь packrat (см. видеоурок) или checkpoint. Если вы пользуетесь операционной системой Windows, обновить R можно функцией updateR() из пакета installr.

Импорт данных в R

Данные, которые вы собираетесь анализировать в R, могут быть представлены практически в любом формате: плоские файлы (flat files, без внутренней иерархии), файлы данных для статистического программного обеспечения, базы данных, веб-данные.

image03

Тип данных определяет выбор подхода к их импорту. Курс Импорт данных в R (по подписке), этот пост о вопросе импорта данных и этот вебинар от RStudio помогут получить больше понимания.

  • Плоские файлы (flat files) – это обычные текстовые файлы, содержащие данные в табличном виде. Базовые средства языка R предоставляют возможность импортировать такие файлы как таблицы, используя функции read.table() и read.csv() из пакета utils. Ту же задачу решает отдельный пакет – readr, быстрый и простой в использовании – более лаконичный и производительный, чем utils (больше информации); а также функция fread() из пакета data.table (инструкция).
  • Если вам нужно загрузить excel-файл в R, хорошей идеей будет воспользоваться пакетом readxl. В качестве альтернативы можно рассмотреть пакеты gdata и XLConnect. Последний работает как «мост» между Excel и R, позволяя вам выполнять любые действия с данными, доступные в Excel, непосредственно в R. Здесь — больше подробностей об импорте excel-файлов.
  • Программы для обработки данных, такие как SAS, STATA и SPSS пользуются собственными форматами данных. Пакет haven от Хэдли Викхэма поможет с лёгкостью импортировать такие данные в R. Другой вариант – пакет foreign, который работает с такими экзотическими форматами, как, например, Systat и Weka. Он также позволяет экспортировать данные в различные форматы. (Совет: если вы переключаетесь с работы в SAS, SPSS или STATA на язык R, познакомьтесь с этим руководством Боба Мюнхена (только по подписке)).
  • Пакеты, позволяющие импортировать данные из реляционных баз данных, подбираются исходя из типа базы данных. Если вы хотите подключить MySQL, вам нужен пакет RMySQL. Для других типов баз данных есть пакеты RpostgreSQL и ROracle. Полезные функции языка R, которые можно использовать для доступа и управления базой данных, собраны в пакете DBI.
  • Если вы хотите собирать информацию из интернета, вам нужно установить соединение между R и API ресурсе, или воспользоваться специальными пакетами-«сборщиками», такими как rvest. В блоге Рольфа Фредхайма есть отличный материал, который поможет вам освоиться с задачами такого рода.

Обработка данных

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

  • Пакет tidyr позволит вам привести данные «в порядок». Порядок значит, что каждая колонка выступает в качестве переменной, а каждая строка – в качестве наблюдения. Таким образом, этот пакет приводит ваши данные в наиболее удобный для работы вид. На этом отличном ресурсе можно узнать больше о том, как привести данные в порядок, используя пакет tidyr.
  • Если вы хотите проводить операции со строками, вам стоит узнать больше о пакете stringr. Его краткое описание очень доступно и содержит много примеров, которые позволят вам быстро освоиться с пакетом.
  • dplyr – отличный пакет для работы с фреймами данных как объектом (в памяти и вне её). В нём сочетаются скорость работы и крайне интуитивный синтаксис. Узнать больше о пакете dplyr можно в этом курсе об обработке данных (требуется подписка), а также в шпаргалке.
  • Для выполнения тяжёлых задач обработки данных незаменим пакет data.table. Он невероятно быстр, и освоившись с синтаксисом пакета, вы вдруг обнаружите, что используете его постоянно. Этот курс по анализу данных (требуется подписка) прольёт больше света на особенности пакета, а дополнением к нему станет шпаргалка.
  • Возможно, в какой-то момент вы застанете себя за работой с временем и датами. Не скроем, это может быть тяжёлый опыт, но, к счастью, пакет lubridate способен немного облегчить задачу. Познакомьтесь с его кратким описанием, чтобы лучше понимать, как использовать его в повседневном анализе.
  • Базовый R очень ограничен в работе с временными рядами. К счастью, существуют пакеты zoo, xts и quantmod. Это руководство от Эрика Зиворта поможет лучше понять, как пользоваться этими пакетами, и как работать с временными рядами в R в целом.

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

Визуализация данных

Одна из особенностей языка R, которая делает его таким отличным инструментом – это возможности для визуализации данных. ggplot2, вероятно, самый известный пакет для визуализации данных, и обязателен к изучению для новичков! Всю нужную информацию для того, чтобы начать работу с ggplot2, можно найти на сайте http://ggplot2.org/ — а также в шпаргалке и книге, посвящённых пакету. Кроме того, на визуализацию рассчитаны пакеты ggvis (позволяет строить интерактивные графики для web – см. руководство (требуется подписка)), googleVis для взаимодействия с графиками Google (вы сможете воссоздать визуализацию из этого выступления на TED), Plotly для R и многие другие. В списке пакетов для задачи можете найти инструменты, подходящие именно вам, а если у вас есть проблемы с построением графиков – этот пост может помочь с ними справиться.

В R также есть отдельная задача обработки пространственных данных – она позволит создавать восхитительные карты, как, например, эта:

image01

Для начала обратите внимание на пакет ggmap, позволяющий обрабатывать пространственные данные и отрисовывать их поверх статичных карт с таких ресурсов как Google Maps и Open Street Maps. В качестве альтернативы можно попробовать пакеты maptools, choroplethr или tmap. Ищете более подробное руководство – обратите внимание на материал Введение в визуализацию пространственных данных в R.

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

Один из новейших инструментов для визуализации данных в R – это HTML-виджеты. HTML виджеты работают также, как графики в R, но они позволяют добавить интерактивности к визуализации – например, создавать динамические карты (leaflet), строить графики для временных рядов (dygraphs) или интерактивные таблицы (DataTables). Посмотрите на несколько отличных примеров HTML-виджетов из жизни, и исчерпывающую документацию для того, чтобы научиться создавать собственные (если не любите тексты – можно посмотреть видео).

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

Наука о данных и машинное обучение в R

Существует много ресурсов, посвящённых использованию R в науке о данных. Список доступных онлайн курсов:

Если вы предпочитаете читать, то обратите внимание на:

Как только вы займётесь машинным обучение в R – сразу поймаете себя на использовании таких пакетов как caret, rpart и randomForest. К счастью, есть несколько отличных ресурсов для изучения этих пакетов и машинного обучения в целом. Если вы только начинаете, это руководство поможет разобраться в кратчайшие сроки. Другие варианты – книги Освоение машинного обучения с R и Машинное обучение с R. Если вы ищете последовательное руководство, основанное на примерах из реальной жизни, обратите внимание на курс, посвящённый машинному обучению на Kaggle, и блог Wiekvoet.

Подготовка отчётов в R

R Markdown это формат, позволяющий легко создавать динамические документы, презентации и отчёты в R. Это замечательный инструмент для подготовки воспроизводимых отчётов об анализе данных, позволяющий сделать анализ более полезным и доступным для восприятия. R markdown основан на knitr и pandoc. При помощи R markdown, R позволяет генерировать итоговые документы, которые замещают код R результатами его работы. Эти документы могут быть представлены в html, word, pdf, ioslides и в других форматах. Вы можете даже создавать интерактивные документы R markdown, используя shiny. Это четырёхчасовое руководство по Подготовке отчётов с R Markdown (по подписке) познакомит вас с инструментом, а в дополнение можно пользоваться этой подсказкой.

Кроме R markdown, не забудьте познакомиться с Shiny. Shiny невероятно упрощает подготовку веб-приложений с R. Он позволят вам представить результаты анализа в виде интерактивного веб-приложения, без необходимости учить HTML, CSS или JavaScript. RStudio поддерживает отличный учебный ресурс, чтобы облегчить начало работы с Shiny, включая этот набор видео-руководств (выбирайте Essentials of Shiny Learning). Доступные и более продвинутые темы, а также отличный набор примеров.

image00

Углублённое изучение R – (платные) онлайн курсы

DataCamp

DataCamp также предлагает доступ ко всем продвинутым курсам по R, включая следующие, за 25 долларов в месяц.

Udemy

Другая компания – Udemy. Хотя они не предлагают связку из видео и интерактивных сессий, как DataCamp, на сайте доступен большой объём видео уроков, покрывающих другие темы, связанные с R и статистикой. Читателям R-bloggers Udemy предлагает доступ к своим курсам по цене 15-30 долларов за курс – используйте код RBLOGGERS30 для дополнительной скидки в 30%. Вот некоторые из их курсов:

Продвинутые курсы R: 

Вводные курсы R: 

Statistics.com

Statistics.com это веб-сайт для обучения, с более чем сотней курсов по статистике, аналитике, поиску данных, анализу текстов, прогнозированию, анализу социальных сетей, пространственных данных и т.д.

Они предлагают читателям R-Bloggers сниженную цену в 399 долларов за любой из их 23 курсов по R, Python, SQL или SAS. Это курсы с высокой отдачей, каждый длится по 4 недели (обычная стоимость – 589 долларов). Они предлагают практические упражнения и проекты, а также возможность получить ответы онлайн от таких экспертов, как Пол Мюррелл (участник команды разработки R core), Крис Брансдон (один из разработчиков пакета GISTools), Бен Баумер (бывший статистик бейсбольной команды Mets из Нью-Йорка) и другие. Эти инструкторы ответят на все ваши вопросы (на закрытом форуме) в четырёхнедельный период.

Вы можете использовать код «R-Blogger16» при регистрации. Можно зарегистрироваться на любой курс по R, Python, Hadoop, SQL или SAS, начинающихся в любое время. Список курсов, связанных с R:

Использование R в статистике:

Формирование навыков программирования на R

– для тех, кто знаком с R или другими языками разработки и средами для статистических вычислений:

Применение R в специфических задачах или приложениях:

Вы можете выбрать любой из курсов по R со страницы каталога:
www.statistics.com/course-catalog/

Дальнейшие шаги

Как только вы освоитесь с синтаксисом R (и станете зависимым от него), вам захочется использовать больше его возможностей (читай: делать по-настоящему крутые вещи). В этом случае – обратитесь к RCPP, пакету для R, который облегчает интеграцию с кодом C++, или к RevoScaleR (начните с бесплатного руководства).

Написав достаточно много кода на R (и став зависимым от него), вы достигнете точки, за которой вам захочется создавать собственные пакеты. Хилари Паркер из Этси написала короткое руководство по созданию пакетов, и если вы настроены серьёзно – стоит почитать книгу Хэдли Уикхэма Пакеты R, доступной в интернете бесплатно.

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

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