Кажется, что языка Python достаточно для всего: и написать скрипт для сервера, и проанализировать данные, и обучить нейронку. Тем более что для него есть много библиотек для статистики и анализа данных — можно брать и использовать любую из них.
Но часто для аналитики и работы со статистикой используют другой язык — R. Давайте выясним, почему для этого нужен отдельный язык и чем он хорош.
Свободный язык от аналитиков для аналитиков
Первая версия языка R появилась в 1993 году, на два года позже, чем Python. В то время Python ещё не был так популярен и у него не было столько библиотек для анализа данных, сколько есть сейчас. Поэтому учёные из факультета статистики Оклендского университета создали язык для своих внутренних задач. А так как их звали Росс и Роберт, то и язык они назвали в честь первой буквы в имени — R.
Изначально R разрабатывался как внутреннее средство на факультете для решения своих статистических задач. Но в то время среди учёных было хорошим тоном делиться своими наработками со всеми, поэтому они открыли исходный код языка, чтобы каждый мог его улучшить или добавить что-то полезное. С тех пор язык вырос из факультетского проекта до популярного во всём мире инструмента для статистики.
R или Python: какую программу изучать HR аналитикам
Особенность языка R
Так как этот язык придумывали для задач учёных, авторы не старались делать его интуитивно понятным. Они исходили из того, что этим языком будут пользоваться люди, хорошо знакомые с математическим анализом, статистическими методами и вероятностными отклонениями. Именно поэтому R может показаться очень сложным языком, хотя внутри он очень прост и логичен.
Пример программы
В языке не так много привычных по другим языкам команд, но переменные, условные операторы и ввод-вывод есть. Главное — знать специальные команды языка по обработке данных.
Например, если нам нужно посчитать средний балл оценок учеников с разбивкой по оценкам в процентном соотношении, то будет достаточно такого кода:
# В переменную a поместить список всех оценок: a n # Средний балл: m f[,3] # Заголовки столбцов: colnames(f)
Для чего нужен R
Основное применение языка R — анализ данных и построение выводов на их основе:
- визуализация данных любым способом;
- сбор и анализ данных из разных источников;
- работа со статистикой, нахождение аномалий в данных;
- поиск закономерностей и отклонений в данных;
- проверка и подтверждение гипотез.
Отдельное направление в R — машинное обучение и нейросети. Так как язык R изначально был заточен на обработку огромных массивов данных, то на нём легко организовать модель глубокого обучения или сделать новую нейросеть.
Дополнительные модули
Чтобы работать с данными было ещё проще, сообщество учёных и разработчиков сделали много разных модулей, каждый под свою задачу (их ещё называют пакетами). Есть среди них и базовые модули, без которых в R работать не получится: базовый модуль base или модуль grDevices, который отвечает за вывод графиков на экран.
Как установить R и Rstudio
Если нужно что-то специализированное для работы с данными, скорее всего, для этого уже есть модуль. Например, для кластерного анализа подключают модуль cluster, а модуль nlme используют для анализа нелинейных моделей. Сейчас доступно около двух тысяч модулей, поэтому, скорее всего, для каждой прикладной задачи можно найти готовый модуль.
Что дальше
В следующем выпуске расскажем подробнее про этот язык — из чего состоит, какие команды в нём есть и с чего в нём начать.
Источник: thecode.media
Зачем учить R в 2023 году?
Всем привет, я Дмитрий Володин, Analytics Engineer из TrafficStars. Сегодня я хочу немного порефлексировать на тему спроса на R и целесообразности его изучения.
Текст будет выражать личный опыт и мнение, я не буду проводить аналитическую работу по сравнению средних зарплат и количества вакансий на разных языках. Скорее поделюсь своими мыслями. И постараюсь оставаться не предвзятым по максимуму.
R как первый язык
R был моим первым языком программирования, который я использовал именно в работе. В школе были QBasic и Pascal, в институте был ещё Fortran. Была попытка начать учить Python, но как-то не зашло. А вот с R случилась любовь (или мэтч) с первого взгляда.
R называют сложным языком. Во многом как раз из-за того, что он векторный. В R не существует скалярных структур данных. Приходится сразу воспринимать векторы и списки как цельные объекты, к которым применяются функции, возвращающие вам по сути новые объекты. То есть сразу в голове держать и изменение всей коллекции и отдельно её элементов.
Но я считаю эти аспекты R наоборот его преимуществом для тех, кто не знает программирования и единственным инструментом аналитики данных для кого был Excel. Векторизованность присуща формулам в электронных таблиц (а ещё какие-то элементы функциональной парадигмы). И если вы не знакомы с программированием, но вам приходилось проводить анализ данных в Excel, то я настоятельно рекомендую начать изучать R, потому что вам будет легче. Потому что R в первую очередь именно про работу с данными и их анализ.
Ещё одним важным преимуществом R я считаю простоту получения первых результатов. Крайне важно для только ещё обучающегося аналитика получить первые вменяемые результаты. Даже в базовом R, без всяких tidyverse, вы можете получить информативный график, агрегированные данные и стат выводы буквально в пару строк кода без всякого boilerplate.
Но что делать потом, когда азы понятны и можно даже уже работать и получать зарплату? Учиться дальше. R имеет превосходные возможности по статистическому и машинному обучению. С визуализацией (а тем более интерактивной) у языка тоже полный порядок. Написать и доставить аналитическое веб приложеие на Shiny с одной стороны просто, но при этом функциональность можно задать любую: от простого графика с параметрами, до управленческого дэшборда с функциональными элементами. Также в MLflow и Spark есть интерфейсы на R, то есть писать аналитические приложения на современном стеке можно (и нужно) и на R.
К тому же очень редкий разработчик сейчас знает только один язык. R не только отличный первый язык, но и удобный мостик к другим языкам для работы с данными. Из R очень легко вкатиться в SQL, так как подход к работе с таблицами очень похож. Да и с тем же Python проблем не будет, если чуть более погрузиться в императивную парадигму и подучить алгоритмы.
Для меня R остаётся идеальным языком для начала карьеры в работе с данными. Но на нём одном замыкаться точно не стоит.
R как второй язык
Тут я буду больше фантазировать, потому что личного опыта нет. Если вы из академической среды с опытом в Fortran/Matlab/SPSS/Stata/APL, то R для вас может стать современным, но при этом довольно привычным инструментом работы с данными. Боюсь разжечь в комментариях пожар этими утверждениями, напоминаю, что это моё мнение, основанное на небольших теоретических знаниях о перечисленных инструментах.
Если вы уже крутой дата саентист и занимаетесь дип лёрнингом на Python, то и вам стоит посмотреть в сторону R. Хотя бы для расширения кругозора. Или для более удобных способов обработки и визуализации данных. Ну и для огромного арсенала статистических инструментов. Да к тому же привычные Torch, TensorFlow с Keras и H2O есть и в R.
Вот для бэк- и фронтендеров я не буду советовать свой путь в анализе данных (если уж решились) начинать с R. Во-первых, наверняка в вашем привычном языке что-то уже есть для анализа данных, например библиотеки визуализации данных в JS. Во-вторых, проще будет с Python, так как это язык общего назначения.
Рынок труда
Самая больная тема для всех R-специалистов. Да, вакансий на R в разы меньше, чем на Python. Даже только в сфере работы с данными. Но ведь есть и обратная сторона: аналитиков на R гораздо меньше, чем на Python. То есть конкуренция может быть примерно одинаковой.
А преимущества из первой части статьи всё ещё на месте.
К тому же компаниям, особенно небольшим, достаточно индифферентно, на каком языке вы работаете с данными. Там рады, что в принципе вышли из порочного круга 1С+Excel.
Освоив R и выбрав корпоративный карьерный путь, вы рано или рано натолкнётесь на SQL. А зачастую и его одного достаточно для получения неплохой работы. Я получал оффер в крупную российскую компанию на должность ведущего дата инженера после тестирования только SQL и немного теории. Причём на Hadoop стек, с которым я не был знаком и о чём сообщил, конечно же.
Ажиотаж вокруг айти пока ещё не утихает и многие стремятся в этот поезд запрыгнуть. Следующий мой совет будет не для абитуриентов, студентов и выпускников вузов, а для тех, кто решает сейчас менять свою карьеру. Я вам рекомендую начать свой путь именно с анализа данных на R. И становиться аналитиком в своей отрасли. Может быть прямо в вашей текущей компании.
Так у вас будет два огромных преимущества: знания современных и мощных инструментов для анализа данных и широкий опыт в индустрии (то, что за бугром называют domain specific knowledge и считают огромным преимуществом для аналитиков). Ну а дальше набирайтесь опыта и новых знаний и ваша карьера будет активно развиваться. Строго говоря, это правило применимо для любой профессии. Учиться надо до самой пенсии, но и там не стоит останавливаться.
На своём курсе по R я как раз даю необходимый минимум для старта в профессии. После его окончания вы сможете получать, обрабатывать и визуализировать данные, проводить статистический анализ и представлять заказчикам его результаты.
- Блог компании OTUS
- Программирование
- R
Источник: habr.com
Язык программирования R
Языков программирования очень много. В данной статье будет рассмотрен R. Этот язык используется для статистической обработки данных и работы с графикой.
Определение
В Google полно информации о самых разных programming languages. С помощью полученных данных новичком может быть создан его первый проект. The R не является исключением. С его помощью тоже можно сформировать программный код.
R – язык программирования, предназначенный для статистической обработки информации, а также использования графики. Он обладает открытым исходным кодом (the open source project). Применяется при анализе и обработке материалов в электронном виде.
The R имеет не только язык с нестандартным для разработчика синтаксисом. Google указывает на то, что в нем есть дополнительный software:
- среда разработки R;
- фреймворк;
- разнообразные встроенные возможности.
The code, написанный на этом ЯП, будет работать на любой операционной системе. При помощи него можно визуализировать the information, а также организовать ее более глубокий и качественный анализ.
Google говорит о том, что данный ЯП появился в 1990-х годах. Его придумали Росс Айхэка, а также Роберт Джентлмен. Он стал свободной реализацией языка S.
Особенности использования
The R применяется не для широкой разработки. Это узкоспециализированный ЯП, который используется преимущественно в научной деятельности. Пример – в the BigData, а также искусственном интеллекте.
Google предписывает использование The R в ситуациях, когда требуется выделенная вычислительная мощность или отдельные серверы. Он идеален для всевозможных исследовательских работ.
Для того, чтобы начать работу с The R lang, нужно установить IDE Studio. Далее – разобраться с синтаксисом (в этом неплохо поможет Google и различные видео-уроки). Рекомендуется обратить внимание на следующие пакеты:
- zoo – применяется in programs с регулярными, а также иррегулярными временными последовательностями;
- caret – при помощи этого инструмента может быть создана программа машинного обучения;
- stringr – дает возможность работать со строками;
- ggvis, ggplot2, lattice – используется для непосредственной виртуализации информации.
Google также указывает на то, что для упрощения операций с пакетами, встроенными в R language, необходимо хорошенько разобраться с data.table, plyr и dplyr.
Преимущества и недостатки
Перед тем как учить этот lang и создавать свои первые projects, нужно выяснить, какие преимущества и недостатки есть у соответствующего ЯП. Он не входит в ТОП самых используемых языков, но в научной сфере деятельности пользуется неплохим спросом. В Google полно информации о том, какие сильные и слабые стороны есть у R.
Плюсы
The R – это узкоспециализированный язык программирования. Он обладает следующими преимуществами:
- Написанные codes могут быть запущены без компиляции. Связано это с интерпретатором, который в режиме реального времени демонстрирует, как работает программа. Об ошибках он оповестит, но уже после активации приложения.
- В процессе используется векторный подход к разработке. Это приводит к повышению производительности.
- Создание специально для статистической обработки данных.
- Наличие огромного количества пакетов и инструментов, а также встроенного software в виде IDE Studio.
- Отличная визуализация. «Картинка», полученная при помощи The R, согласно Google, обычно оказывается максимально информативной.
- Собственная экосистема и дружелюбное сообщество. Данный момент особо полезен новичкам. Они смогут попросить помощи у более опытных коллег, получив ответы на интересующие вопросы в кратчайшие сроки.
Google ссылается также на то, что посмотреть некоторые пакеты R можно в репозиториях GitHub, а также BioConductor и CRAN. Весь их перечень расположен в RDocumentation.
The R не требует от разработчика ни существенных знаний в области разработки, ни предварительного изучения других programming language. Даже в базовые знания в области информатики не пригодятся. Это идеальное решение для статистов, аналитиков и иных ученых.
Минусы
Недостатков у R не слишком много. В основном они заключаются в том, что codes, написанные на нем, не слишком быстрые. The R является достаточно медленным ЯП, который изначально был создан для облегчения работы статистов, а не компьютера. Для повышения производительности рекомендуется использовать:
Грамотно написанный code будет работать достаточно быстро. Со своими ключевыми задачами ЯП справляется прекрасно.
Google указывает еще и на то, что R достаточно сложен в изучении. Особенно это касается ситуаций, при которых разработчик опирается не на «голую» статистику, а на ее графическую составляющую. Иногда новичкам приходится потратить массу времени на поиск необходимых для дальнейшей работы пакетов.
Еще один небольшой недостаток для программистов – это узкая сфера применения. Этот language ориентирован на анализ информации. Его среда и возможности не заточены под написание бизнес-приложений и игр, но Google говорит о том, что за пределами науки R применяют все чаще.
Как работает программирование в R
R является интерпретируемым языком. Google говорит о том, что пользователи смогут получить к нему доступ при помощи интерпретатора командной строки. Если человек введет там «2+2» (без кавычек), программа считает информацию и выведет на экран результат в виде результата сложение – 4.
- Процедурное программирование с функциями.
- Объектно-ориентированное программирование. У него более мощные средства для этого, чем у S.
- Лексические правила области видимости, полученные из Scheme. Этот ЯП применяет S-выражения для представления не только данных, но и самого кода.
- Объекты. К ним относят пространственные координаты, регрессионные модели и временные ряды.
- Множественную диспетчеризацию. Функциями здесь можно управлять точно так же, как и объектами информации. Данный момент способствует облегчению метапрограммирования.
Опытные разработчики, создавая project r, могут использовать коды на C, а также Python, Java, .NET и C++ для управления объектами рассматриваемого ЯП. У него высокая расширяемость за счет пакетов, используемых для определенных функций и приложений.
Об обработке данных
Google говорит о том, что структуры данных R предусматривают:
Векторы здесь – это упорядоченные наборы значений, которые могут сопоставляться с массивами в порядке столбцов. Имея упорядоченный набор измерений, сначала будут выполнены значения по первому измерению. После этого произойдет заполнение одномерных массивов по второму и так далее.
The R поддерживает арифметику массивов. В данном смысле он напоминает MATLAB, а также APL. Частный случай массивов здесь называется матрицей.
Списками называются коллекции объектов, которые могут иметь совершенно разные типы данных. Фреймы включают в себя списки вектором одной и той же длины, а также уникальные наборы строковых имен. В The R отсутствует скалярный тип информации.
В Google указано, что библиотеки рассматриваемого языка отвечают за реализацию статистических методов, включая моделирование:
- линейное;
- нелинейное;
- обобщенное линейное.
Поддерживается анализ пространственных и временных рядов, классификация, кластеризация, а также всевозможные классические статистические тесты. Графики здесь является одной из наиболее сильных сторон. Они поддерживают математические символы.
Реализации
Перед созданием project r, нужно изучить его реализации. Основная реализация языка, согласно Google, написана на R, C и Fortran. Есть несколько иных реализаций, направленных на повышение производительности и расширяемости.
Наиболее быстрый вариант – это pqR от Рэдфорда Нила. Он обладает улучшенным управлением памятью, а также поддержкой автоматической многопоточностью. Также существуют Rejin и FastR – Java-реализации, которые предназначены для использования в виртуальной среде (машине) Java.
В C++ рассматриваемый ЯП представлен:
Компанией Microsoft представлен полностью совместимый с R дистрибутив. Он называется Microsoft R Open (MRO). В ней полно модификаций для многопоточных вычислений. В конце июня 2021 года Microsoft начали переходить к дистрибутиву CRAN.
Создание проекта
После изучения R при помощи Google или иных источников данных, может быть создана первая программа. Далее будут приведены наглядные примеры, code в которых написан полностью на изучаемом ЯП. Они помогут быстрее его освоить.
В предварительную подготовку входит инициализация:
- RStudio – это IDE для работы с языком;
- интерпретатора ЯП.
После запуска среды разработки, нужно в разделе Packages увидеть установленные пакеты. Для успешного создания project r, нужно дополнительно инициализировать:
- Rcurl – предназначается для непосредственной работы с сетью;
- XML – пакет, предназначенный для работы с DOM деревом XML-документов.
После выбора желаемых пакетов требуется кликнуть по Install Packages. Их необходимо отметить галочкой, чтобы загрузить в текущее окружение.
Получение информации
Для того, чтобы написать program, связанную с получением данных (DOM-объект документа из интернета), потребуется выполнить такие строки:
Стоит обратить внимание на передаваемые cookie. Если необходимо повторить эксперимент, потребуется подставить собственные «куки». Те, что после авторизации на веб-сервисе будет получать интернет-обозреватель. Далее предстоит получить такие сведения:
- количество просмотров;
- добавление в избранные;
- когда запись была опубликована;
- сколько нажатий было +1, -1 и +1 вместе с -1;
- нынешний рейтинг;
- комментарии.
Сделать это поможет код:
- Поиск атрибутов и элементов проведен через xpath.
- Требуется сформировать из полученных сведений data.frame – аналог таблиц БД: .
- Необходимо преобразовать строки в числа и получить реальную дату в привычном формате: .
- Добавляются дополнительные поля. Они вычисляются из уже полученных:.
На данном этапе code поможет получить и преобразовать информацию для анализа. Предложенный пример актуален всего для одной страницы. Для функции используется функция: