4  Переход к R

Ниже представлены некоторые советы и ресурсы, если вы переходите к работе с R.

R был представлен в конце 1990-х и с тех пор значительно вырос по своему охвату. Его возможности столь широки, что коммерческие аналоги отреагировали на развитие R, чтобы сохранить конкурентоспособность! (прочитайте эту статью, где сравниваются R, SPSS, SAS, STATA и Python).

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

Не пугайтесь - приходите изучать мир R!

4.1 Из Excel

Переход от Excel напрямую к R является очень достижимой целью. Это может показаться сложным, но вы справитесь!

Действительно, человек с хорошими навыками Excel может делать очень продвинутые вещи сразу в Excel - даже использовать инструменты написания скрипта, такие как VBA. Excel используется по всему миру и является важным для эпидемиологов инструментом. Однако, если вы добавите к нему R, это может существенно улучшить и расширить ваши потоки работы.

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

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

Excel - хорошо известная программа, которой очень легко пользоваться новичкам для простого анализа и визуализации по принципу “указания и щелчка”. Для сравнения, чтобы почувствовать себя комфортно с функциями и интерфейсом R может потребоваться пара недель. Однако за последние годы R стал гораздо более удобным для новичков.

Многие потоки работы в Excel полагаются на память и на повторение - таким образом, возникает множество моментов, где могут быть допущены ошибки. Более того, в целом, вычистка данных, методология анализа и уравнения скрыты из вида. Для нового коллеги может потребоваться значительное время, чтобы узнать, что делает рабочая книга Excel, и как искать и устранять проблемы. В R все шаги четко записаны в скрипте, их легко просматривать, редактировать, исправлять и применять к другим наборам данных.

Чтобы начать переход от Excel к R вы должны немного поменять мышление:

Аккуратные данные

Используйте машиночитаемые “аккуратные” данные вместо “хаотичных, читаемых человеком” данных. Для “аккуратных” данных существует три основных требования, как объясняется в самоучителе по “аккуратным” данным в R:

  • У каждой переменной должен быть свой столбец
  • У каждого наблюдения должна быть своя строка
  • У каждого значения должна быть своя ячейка

Для пользователей Excel - представьте себе, какую роль играют “таблицы” Excel в стандартизации данных и обеспечении предсказуемости формата.

Примером “аккуратных” данных может быть построчный список случаев, используемый в данном руководстве - каждая переменная содержится в одном столбце, у каждого наблюдения (одного случая) есть своя строка, а каждое значение занимает только одну ячейку. Ниже вы можете увидеть первые 50 строк построчного списка:

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

Чтобы проиллюстрировать отличия, ниже представлены некоторые выдуманные примеры неаккуратных данных, которые отдают приоритет читаемости для человека, а не читаемости для машины:

Проблемы: В указанной выше электронной таблице есть объединенные ячейки, которые R сложно воспринимать. Непонятно, какую строку считать “заголовком”. Цветовая кодировка представлена справа, а значения ячеек представлены цветами - R это сложно интерпретировать (и сложно будет людям с цветослепотой!). Более того, в одной ячейке объединены разные элементы информации (несколько партнерских организаций, работающих в одном районе, либо статус “требует уточнения” (“TBC”) в той же ячейке, что “Part112ner D”).

Проблемы: В приведенной выше электронной таблице существует несколько дополнительных пустых строк и столбцов в наборе данных - это будет вызывать проблемы при вычистке в R. Более того, GPS координаты растянуты на две строки для отдельной медицинской организации. Дополнительно следует указать, что координаты GPS представлены в двух разных форматах!

“Аккуратные” наборы данных могут быть более сложны для восприятия человеку, но они существенно облегчают вычистку и анализ данных! Аккуратные данные можно хранить в разных форматах, например “длинном” (вертикальном) и “широком” (горизонтальным) (см. страницу Поворот данных), но указанные выше принципы все равно соблюдаются.

Функции

Слово “функция” в R может быть новым, но концепция существует и в Excel в виде формул. Формулы в Excel также требуют строгого синтаксиса (например, размещение точек с запятой и скобок). Вам нужно лишь выучить несколько новых функций и понять, как они совместно работают в R.

Скрипты

Вместо того, чтобы кликать на кнопки и протягивать ячейки, вы будете записывать каждый шаг и процедуру в “скрипт”. Пользователям Excel могут быть знакомы “макросы VBA”, которые также используют подход написания скриптов.

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

Ниже представлен пример скрипта R:

Ресурсы для перехода из Excel в R

Ниже представлены ссылки на самоучители, которые помогут вам перейти к R из Excel:

Взаимодействие R и Excel

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

Действительно, некоторая эстетика форматирования Excel может быть потеряна при переносе (например, курсив, боковой текст и т.п.). Если ваша работа требует постоянного переноса файлов между R и Excel при сохранении оригинального форматирования Excel, попробуйте такие пакеты, как openxlsx.

4.2 Из Stata

Переход в R из Stata

Многих эпидемиологов изначально учили пользоваться Stata, и им может казаться сложным переход к R. Однако если вы уверенно пользуетесь Stata, переход к R может оказаться проще, чем вы думаете. Хотя и существуют некоторые ключевые различия между Stata и R в том, как можно создавать и изменять данные, а также в том, как реализуются функции анализа - изучив эти ключевые различия, вы сможете адаптировать свои навыки.

Ниже представлены некоторые ключевые особенности Stata и R, которые могут быть вам полезны при изучении данного руководства.

Общие комментарии

STATA R
Вы можете просматривать и изменять только один набор данных за раз Вы можете просматривать и работать с несколькими наборами данных одновременно, поэтому вам часто нужно будет уточнять набор данных в коде
Доступно онлайн сообщество в https://www.statalist.org/ Доступно онлайн сообщество в RStudio, StackOverFlow, а также R-bloggers
Опция функционала “указать и щелкнуть” Минимальный функционал “указать и щелкнуть”
Справка по коммандам доступна с помощью help [command] Справка доступна с помощью [function]? или поиска в панели Help (справка)
Комментирование кода с помощью * или /// или /* TEXT */ Комментирование кода с помощью #
Почти все команды встроены в Stata. Новые/написанные пользователем функции могут быть установлены как ado файлы, используя ssc install [пакет] R устанавливается с базовыми функциями, но, как правило, для его использования требуется установка других пакетов из CRAN (см. страницу Основы R)
Анализ, как правило, записывается как файлы do Анализ записывается в виде скрипта R в панели RStudio source (источник). Альтернативой являются скрипты R markdown.

Рабочая директория

STATA R
Рабочие директории требуют абсолютного пути к файлу (например, “C:/usename/documents/projects/data/”) Рабочие директории могут иметь абсолютный или относительный путь к корневой папке проекта, используя пакет here (см. Импорт и экспорт)
Просмотр текущей директории с помощью pwd Используется getwd() или here() (при использовании пакета here), с пустыми скобками
Рабочая директория задается с помощью cd “место расположения папки” Используется setwd(“место расположения папки”), или set_here("место расположения папки) (при использовании пакета here)

Импорт и просмотр данных

STATA R
Специфичные команды по типам файлов Используется import() из пакета rio почти для всех типов файлов. Специфичные функции существуют в качестве альтернатив (см. Импорт и экспорт)
Чтение csv файлов осуществляется через import delimited “filename.csv” Используйте import("filename.csv")
Чтение xslx файлов осуществляется через import excel “filename.xlsx” Используйте import("filename.xlsx")
Просмотр ваших данных в новом окне с помощью команды browse Просмотр набора данных на панели source (источник) RStudio с помощью View(dataset). Вам нужно уточнить название вашего набора данных для функции в R, поскольку в нем может содержаться несколько наборов данных одновременно. Обратите внимание на заглавную “V” в этой функции
Получение краткого обзора вашего набора данных с помощью summarize, которая даст названия переменных и основную информацию Получение краткого обзора вашего набора данных с помощью summary(dataset)

Простые манипуляции с данными

STATA R
Столбцы набора данных часто называют “переменные” Чаще называют “столбцы” или иногда “векторы” или “переменные”
Нет необходимости указывать название набора данных В каждой из указанных ниже команд вам необходимо указывать набор данных - см. примеры на странице Вычистка данных и ключевые функции
Новые переменные создаются с помощью команды generate varname = Новые переменные создаются с помощью функции mutate(varname = ). См. детальную информацию по всем указанным ниже функциям dplyr на странице Вычистка данных и ключевые функции.
Переменные переименовываются с помощью rename old_name new_name Столбцы можно переименовать с помощью функции rename(new_name = old_name)
Переменные выбрасываются с помощью drop varname Столбцы можно удалить, используя функцию select() с названием столбца в скобках после знака минус
Переменные факторы можно подписать, используя серию команд, таких как label define Переменные подписываются путем конвертации столбца в класс фактор и уточнения уровней. См. страницу Факторы. Названия столбцов, как правило, не подписываются так, как в Stata.

Описательный анализ

STATA R
Подсчет количества по переменной с помощью tab varname Укажите название набора данных и столбца в table(), например, table(dataset$colname). Либо используйте count(varname) из пакета dplyr, как указано в разделе Группирование данных
Перекрестная табуляция по двум переменным в таблице 2x2 проводится с помощью tab varname1 varname2 Используйте table(dataset$varname1, dataset$varname2 или count(varname1, varname2)

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

  • https://dss.princeton.edu/training/RStata.pdf
  • https://clanfear.github.io/Stata_R_Equivalency/docs/r_stata_commands.html
  • http://r4stats.com/books/r4stata/

4.3 Из SAS

Переход от SAS к R

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

Общие комментарии

SAS R
Доступно онлайн сообщество через Клиентскую поддержку SAS Доступно онлайн сообщество через RStudio, StackOverFlow, и R-bloggers
Справка по командам доступна через help [command] Справка доступна через [function]? или через поиск на панели Help (Справка)
Комментирование кода с помощью * TEXT ; или /* TEXT */ Комментирование кода с помощью #
Почти все команды встроены. Пользователи могут писать новые функции с помощью SAS macro, SAS/IML, SAS Component Language (SCL), и в последнее время через процедуры Proc Fcmp и Proc Proto R устанавливается с базовыми функциями, но при использовании, как правило, требуется установка других пакетов из CRAN (см. страницу Основы R)
Анализ, как правило, проводится с помощью написания программы SAS в окне Editor. Анализ записывается в виде скрипта R на панели source (источник) в RStudio. Альтернативой являются скрипты R markdown.

Рабочая директория

SAS R
Рабочие директории могут иметь абсолютный или относительный путь к корневой папке проекта, используя %let rootdir=/root path; %include “&rootdir/subfoldername/filename” Рабочие директории могут иметь абсолютный или относительный путь к корневой папке проекта, используя пакет here (см. Импорт и экспорт)
Просмотр текущей рабочей директории с помощью %put %sysfunc(getoption(work)); Используется getwd() или here() (при использовании пакета here), с пустыми скобками
Рабочая директория задается с помощью libname “folder location” Используется setwd(“место расположения папки”), или set_here("место расположения папки) (при использовании пакета here)

Импорт и просмотр данных

SAS R
Используйте процедуру Proc Import или утверждение Data Step Infile. Используйте import() из пакета rio почти для всех типов файлов. Существуют специфические функции в качестве альтернатив (см. Импорт и экспорт)
Чтение csv файлов осуществляется с помощью Proc Import datafile=”filename.csv” out=work.filename dbms=CSV; run; ИЛИ с помощью Утверждения Data Step Infile Use import("filename.csv")
Чтение xslx файлов осуществляется с помощью Proc Import datafile=”filename.xlsx” out=work.filename dbms=xlsx; run; ИЛИ с помощью Утверждения Data Step Infile Use import(“filename.xlsx”)
Просмотр данных в новом окне с помощью открытия окна Explorer и выбора нужной библиотеки и набора данных Просмотр набора данных на панели source (источник) RStudio с помощью View(dataset). Вам нужно уточнить название вашего набора данных для функции в R, поскольку в нем может содержаться несколько наборов данных одновременно. Обратите внимание на заглавную “V” в этой функции

Простые манипуляции с данными

SAS R
Столбцы набора данных часто называют “переменными” Более часто называют “столбцы”, иногда “векторы” или “переменные”
Не требуются особые процедуры для создания переменной. Новые переменные создаются просто путем впечатывания названия новой переменной, после которой ставится знак равно, а затем выражение для определения значения Новые переменные создаются с помощью функции mutate(varname = ). См. детальную информацию по всем указанным ниже функциям dplyr на странице Вычистка данных и ключевые функции.
Переменные переименовываются с помощью rename *old_name=new_name* Столбцы можно переименовасть с помощью функции rename(new_name = old_name)
Переменные сохраняются с помощью **keep**=varname Переменные можно выбрать с помощью функции select() с названием столбца в скобках
Переменные можно удалить с помощью **drop**=varname Столбцы можно удалить с помощью функции select() с названием столбца в скобках после знака минус
Переменные факторы можно подписать на этапе данных, используя утверждение Label Подпись переменных можно осуществить через конвертацию столбца в класс факторов, уточнив уровни. См. страницу Факторы. Названия столбцов, как правило, не подписываются.
Записи можно выбрать с помощью утверждений Where или If на этапе данных. Несколько условий выбора отделяются с помощью команды “and”. Записи выбирают с помощью функции filter(), а несколько условий выбора отделяются оператором AND (&) или запятой.
Наборы данных объединяются с помощью утверждения Merge на этапе данных. Наборы данных, которые нужно объединить, должны быть сначала отсортированы с помощью процедуры Proc Sort. Пакет dplyr предлагает новые функции для объединения наборов данных. См. детали на странице Объединение данных.

Описательный анализ

SAS R
Общий обзор вашего набора данных можно получить с помощью процедуры Proc Summary, которая дает названия переменных и описательную статистику Получить общий обзор вашего набора данных можно с помощью summary(dataset) или skim(dataset) из пакета skimr
Подсчитать количество по переменной можно с помощью proc freq data=Dataset; Tables varname; Run; См. страницу Описательные таблицы. Опции, среди прочего, включают table() из базового R, и tabyl() из пакета janitor. Обратите внимание, что вам нужно будет уточнить название набора данных и столбца, так как R содержит несколько наборов данных.
Перекрестная табуляция двух переменных в таблице 2x2 выполняется с помощью proc freq data=Dataset; Tables rowvar*colvar; Run; Опять же, вы можете использовать table(), tabyl() или другие варианты, как описано на странице Описательные таблицы.

Некоторые полезные ресурсы:

R для пользователей SAS и SPSS (2011)

SAS и R, Второе издание (2014)

4.4 Совместимость данных

См. страницу [Импорт и экспорт] для получения детальной информации о том, как пакет R rio может импортировать и экспортировать такие файлы, как файлы STATA .dta, файлы SAS .xpt и .sas7bdat, файлы SPSS .por и .sav, а также многие другие.