Как открыть файл в r

Обновлено: 06.07.2024

This file is saved in a binary format, which requires a specific program to read its contents.

Что такое R файл?

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

Тип файла2 Rez Source Code File

This file is saved in a binary format, which requires a specific program to read its contents.

.R вариант № 2

Текстовый файл, используемый Rez, компилятором ресурсов для приложений Mac OS X; содержит декларации для ресурсов приложений, которые могут быть строковыми списками, значками, предупреждениями или одним из многих других типов ресурсов; используется для создания ресурсов в ресурсной вилке файла приложения.

R-файлы должны содержать как объявления типов и определения ресурсов, необходимые для компиляции ресурсов. Скомпилированные ресурсы можно декомпилировать обратно в R-файлы с помощью DeRez.

ПРИМЕЧАНИЕ. Компилятор Rez включен в программное обеспечение для разработки Apple Xcode.

Тип файла3 REBOL Script

Разработчик REBOL Technologies
Категория Файлы разработчиков
Формат Text

This file is saved in a binary format, which requires a specific program to read its contents.

.R вариант № 3

Сценарий, написанный на языке программирования REBOL; содержит код, который может быть скомпилирован в исполняемую программу; может быть программным файлом или файлом заголовка, на который ссылаются другие файлы программы REBOL.

REBOL означает «Язык объектов, основанных на относительном выражении». Язык обычно используется для создания интернет-скриптов и приложений.

Тип файла4 Ratfor Source Code File

Разработчик Brian Kerhighan
Категория Файлы разработчиков
Формат Text

This file is saved in a binary format, which requires a specific program to read its contents.

.R вариант № 4

Файл, используемый Ratfor, препроцессором для языка программирования FORTAN; содержит стандартный исходный код FORTRAN, а также операторы Ratfor, которые могут быть переведены в исходный код FORTAN, прежде чем они будут скомпилированы компилятором FORTRAN.

Ratfor исходный код позволяет разработчикам использовать более широкий синтаксис, чем синтаксис, поддерживаемый компилятором FORTRAN. Например, Ratfor позволяет специфицировать C-подобные конструкции потока управления, такие как if-else, switch, while и for.

В базовом пакете base есть функция read.table , которая отвечает за чтение текстовых файлов. Она имеет множество параметров, что позволяет гибко управлять процессом чтения. Эта функция возвращает data.frame.

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

При написании путей к папкам и файлам можно использовать либо абсолютный либо относительный путь. Например, предыдущий вызов можно оформить как

Для представления пути используются либо символы слэша (/) либо удвоенные символы обратного слэша (\). Это обусловлено тем, что обратный слэш в R это спецсимвол и добавление второго слэша его экранирует и указываает R, что следующий за ним символ надо вопринимать как обычный.
Т.е. обе эти записи пути эквивалетны: "D:/Teaching/R/introduction/md/data/sol_y1.txt" или "D:\\Teaching\\R\\introduction\\md\\data\\sol_y1.txt"

Посмотрим на данные, которые были загружены. Сделать это можно несколькими способами, вот некоторые из них

Функция read.table является не очень эффективной с точки зрения производительности. Файлы, содержащие большое число столбцов считываются очень медленно. Если попробовать прочитать файл sol_x1.txt , который содержит 4058 дескрипторов для 800 соединений, то это займет заметное время.
Можете попробовать выполнить следующий код

Для преодоления этого недостатка есть несколько вариантов, вот два из них:
1. Использовать экспериментальную функцию fread из пакета data.table .
2. Конвертировать текстовые файлы в бинарный формат и в дальнейшем работать с этими файлами.

Чтение текстовых файлов с использованием функции fread (пакет data.table)

Для просмотра загруженной таблицы в RStudio можно использовать команду

или кликнуть по имени переменной x1 в списке

Результат в обоих случаях будет одинаковым

Проверим объект какого класса получился при загрузке таблицы с использованием функции fread

Приведем объект x1 к типу data.frame

Отметим, что первая колонка содержит названия соединений. Переместим значения этой колонки в поле rownames

Проверим, что получилось.

Сохранение данных в бинарном формате

Любые объекты созданные в R можно сохранить в бинарном формате в виде файлов .RData . Это позволяет осуществлять быструю загрузку и доступ к сохраненным данным.

Таким образом можно сохранить данные из однажды прочитанного текстового файла в бинарном формате и в дальнейшем загружать эти данные из него.

Чтобы сохранить содержимое переменной x1 используем следующий вызов (указание ключевого слова file является обязательным)

Очистка рабочей области от загруженных и используемых переменных

Перед загрузкой данных, только что сохраненных в файл sol_x1.RData , сперва очистим рабочую область (удалим все загруженные переменные). Сделать это можно либо функцией rm . Приведенный вызов удалит все загруженные объекты.

Либо кликнув по кнопке Clear .

Объекты также можно удалять выборочно, указывая их названия.

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

Чтение данных в бинарном формате

Загрузим ранее сохраненный файл sol_x1.RData

Как вы могли заметить в списке загруженных переменных появилась новая с именем x1 как у ранее сохраненного data.frame.
Однако если в разных файлах сохранены объекты с одинаковым названием, то для их одновременной загрузки эти объекты необходио переименовать. Это можно во время загрузки данных, использовав следующий набор команд:

Проверим загруженный объект x1.1 на идентичность с x1

Сохранение данных в текстовом формате

Функция write.table сохраняет данные в текстовом формате. Она имеет много параметров для гибкой настройки вида сохраняемого файла.

Другие функции для работы с текстовыми файлами

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

Другие способы ввода-вывода

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

Создание пользовательских функций

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

Создадим простейшую функцию рассчитывающую разность двух векторов

Важно отметить, что при передаче параметров в функции, можно не использовать названия параметров только в том случае, если соблюдается порядок следования параметров. В противном случае необходимо указывать названия параметров.

Продемонстрируем области видимости переменных на примере собственных функций.

Создадим вектор x и вызовем созданную нами функцию. Результат функции это измененный вектор x , однако сам вектор x не изменился.

Таким образом все что передается в функцию попадает в локальную области видимости только этой функции как и все изменения.

Реализуем собственную функцию загрузки бинарных файлов

Ключевое слово return в завершении функции писать не обязательно. По умолчанию функция возвращает результат последней операции.

Для того чтобы сохранить созданную функцию текст функции посещается в (новый) файл R script, который можно создать вызвав меню File - New file - R script или нажав комбинацию Ctrl + Shift + N. После чего пишется текст функции и файл сохраняется с расширением “.R”.

Для загрузки функции из файла используется функция source . Но предварительно очистим содержимое рабочей области.

После чего для загрузки бинарного файла достаточно вызвать

Ранее для чтения текстового файла с дескрипторами мы использовали следующий вызов.

Если часто использовать ее для чтения файлов, то удобнее создать собственную функцию. Создадим два варианта.
Первый вариант

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

Тогда для загрузки файлов с дескрипторами достаточно вызвать

Какие достоинства и недостатки у каждого из вариантов?

Задания

  1. Создать функцию, которая будет считывать текстовый файл, содержащий дескрипторы, с использованием функции fread, и возвращать data.frame.
  2. Прочитать с использованием функции из п.1 и сохранить в бинарном формате файл sol_x2.txt .
  3. Прочитать файл sol_y1.txt , конвертировать загруженные данные в именованный вектор и сохранить его в бинарном формате. Создать для этого соответствующую функцию.
  4. Повторить операции п.3 для файла sol_y2.txt

Манипуляции с данными

Векторы

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

Все приведенные функции векторизированы, поэтому расчет происходит очень быстро и эффективно.

Функция summary возвращает всю вышеприведенную статистику в виде одного вектора значений.

Помимо этих есть еще множество функций рассчета различных статистических характеристик.

Data.frames

Продемонстрируем работу с data.frames на примере.
Есть два набора соединений с рассчитанными дескрипторами и их необходимо объединить в один data.frame.

Загрузим оба имеющихся файла данных:

Проверим размерность загруженных данных. Функция dim возвращает размерность данных (число строк и число столбцов), другими словами число соединений и число дескрипторов.

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

Функция setdiff возвращает элементы первого вектора, которые отсутствуют во втором

var.names1 содержит имена дескрипторов, которые присутствуют в x1 и отсутствуют в x2 . Аналогично для var.names2 .

Посмотрим сколько таких дескриптров в каждом случае

Т.е. первый набор данных содержит 923 дескриптора, которые отсутствуют вов втором наборе, а второй - 383, которые отсутствуют в первом.

Поскольку мы используем фрагментные дескрипторы, то их отсутствие фактически означает, что число дескриторов данного вида равно нулю. Следовательно мы должны добавить отсутствующие дескрипторы в каждый набор данных и приравнять все их значения нулю.
Чтобы добавить нулевые значения этим дескрипторам мы вызываем их для соответствующего data.frame и присваиваем значение 0 .

Проверям размерность полученных данных

Число колонок (дескрипторов) теперь идентично. Проверим порядок следования дескриптров в каждом наборе, используя следующую конструкцию

Выражение в скобках возвращает вектор логических значений, который содержит TRUE в случае если на одинаковых позициях находятся одинаковые значения и FALSE в противном случае. Функция all возвращает TRUE , если все значения логического вектора равны TRUE .

Проверим действительно ли имена дескрипторов в обоих data.frames совпадают и мы ничего не упустили. Используем для этого функцию %in% , которая принимает два вектора, и если значение первого вектора присутствует во втором, то для этого элемента возвращается значение TRUE . Таким образом выражение записанное ниже можно прочитать как “все ли названия колонок первого набора данных присутствуют во втором наборе”

Аналогично выполняется проверка для второго набора

Две эти проверки можно заменить одной, если предварительно отсортировать имена колонок в обоих наборах почле чего сравнить их

Теперь перед объединением строк обоих data.frames необходимо расположить колонки в одинаковом порядке. Воспользуемся для этого свойством индексов и расположим колонки в x2 в той же последовательности что и в x1

Теперь колонки расположены в одной последовательности. Проверим

Полученные data.frames теперь можно объединить в один с использованием функции rbind - объединение данных по строкам (row bind).

Аналогично когда надо объединить данные по колонкам используется функция cbind .

Загрузим и объединим значения свойства для двух наборов данных

Посмотрим на распределение значений свойства

Простейшие функции для работы с графикой

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

Функция hist - строит гистограмму распределения какой-либо величины. Может помочь составить первое впечатление о нормальности распределения данных. Применим эту функцию к свойству y .

Если стандартное отображение не устраивает, то можно его изменить, например, сделав интервалы меньше.

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

Для более подробного знакомства с возможностями базовых функций графического отображения рекомендую ознакомиться со следующими источниками:

Семейство функций apply

apply

Семейство функций apply является более удобным аналогом цикла for .

Рассмотрим пример - необходимо найти среднее значение каждой колонки в data.frame.

Решение с использованием цикла for

Решение с использованием функции apply

Правда короче и проще? Кроме того вектор с результатами содержит названия переменных.

А вот выражение, которое вычисляет среднее значение по строкам

На самом деле для операции нахождения среднего и суммы по строкам/столбцам есть отдельные векторизированные функции rowMeans , rowSums и т.д.

Общий вид вызова функции apply

X - матрица, массив или data.frame
MARGIN - порядковый номер размерноси, к которой будет применяться функция FUN (1 для строк, 2 для колонок)
FUN - применяемая функция

Результатом будет являться вектор (если используемая функция возвращает одно значение), массив (если функция возвращает вектор значений) или список (если функция возвращает результат в виде более сложной структуры данных, например data.frame или матрица).

ВАЖНО! При применении функции apply к data.frame, data.frame неявно приводится к матрице. Матрицы как мы помним содержат данные только одного типа. Это означеат что если в data.frame 9 числовых колонок и 1 текстовая, то будет произведена конвертация в текстовую матрицу, и следовательно все действия будут производиться над текстовой матрицей.
Пример

Чуть более сложный пример - надо посчитать для каждой колонки среднее значение и извлечь из него квадратный корень. выполним это с использованием функции apply

Предложите альтернативный вариант расчета.

sapply & lapply

Помимо функции apply есть еще функции sapply и lapply , отличие которых состоит в том, что на вход они могут принимать вектор или список и возвращают вектор/матрицу ( sapply ) или список ( lapply ).

Вспомним, что data.frame является списком векторов-столбцов. Тогда предыдущий пример можно переписать как

Использование lapply вернет уже список

Возведем значения каждой колонки в степень, соответствующую номеру этой колонки - результатом будет новая матрица.

Обратите внимание, что в этом случае в качестве первого параметра передается не data.frame, а вектор индексов колонок, по которым происходит итерация.

Функция seq_along возвращает вектор индексов с первого до последнего элемента вектора/списка.

Использование функций семейства apply позволяет делать код более простым и читабельным.

Например, надо определить класс каждой колонки в data.frame

Как видим в отличие от apply фугкция sapply не производит неявной конвертации data.frame в матрицу и типы данных в колонках остаются неизменными.

Проверить совпадает ли порядок следования имен соединений в x и y .

Создать функцию, которая читала бы формат файлов дескрипторов dat/cds. Подсказка: можно использовать функцию readBin .

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

Данные могут существовать в разных форматах. Для каждого формата R имеет определенную функцию и аргумент. В этом руководстве объясняется, как импортировать данные в R.

В этом уроке вы узнаете

Читать CSV

Одним из наиболее распространенных хранилищ данных являются форматы файлов .csv (значения, разделенные запятыми). R загружает массив библиотек во время запуска, включая пакет utils. Этот пакет удобен для открытия CSV-файлов в сочетании с функцией reading.csv (). Вот синтаксис для read.csv

Аргумент :

  • file : PATH, где хранится файл
  • header : подтвердите, имеет ли файл заголовок или нет, по умолчанию заголовок установлен в TRUE
  • sep : символ, используемый для разделения переменной. По умолчанию `,`.

Мы будем читать данные файла с именем mtcats. CSV-файл хранится в Интернете. Если ваш файл .csv хранится локально, вы можете заменить PATH внутри фрагмента кода. Не забудьте обернуть его внутри ». PATH должен быть строковым значением.

Для пользователя Mac путь к папке загрузки:

Для пользователей Windows:

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

Вывод:

Вывод:

R по умолчанию возвращает значения символов как фактор. Мы можем отключить этот параметр, добавив stringsAsFactors = FALSE.

Вывод:

Класс для переменной X теперь является символом.

Чтение файлов Excel

Файлы Excel очень популярны среди аналитиков данных. Таблицы просты в работе и гибки. R оснащен библиотекой readxl для импорта электронных таблиц Excel.

Используйте этот код

чтобы проверить, установлен ли readxl на вашем компьютере. Если вы устанавливаете r с помощью r-conda-essential, библиотека уже установлена. Вы должны увидеть в окне команд:

Вывод:

Если пакет не выходит, вы можете установить его с библиотекой conda или в терминале, используйте conda install -c mittner r-readxl.

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

readxl_example ()

Мы используем примеры, включенные в пакет readxl во время этого урока.

чтобы увидеть все доступные таблицы в библиотеке.


Чтобы проверить расположение таблицы с именем clippy.xls, просто используйте


Если вы устанавливаете R с помощью conda, электронные таблицы находятся в Anaconda3 / lib / R / library / readxl / extdata / filename.xls

read_excel ()

Функция read_excel () отлично подходит для открытия расширений xls и xlsx.

Мы можем импортировать электронные таблицы из библиотеки readxl и посчитать количество столбцов на первом листе.

Вывод:

excel_sheets ()

Файл datasets.xlsx состоит из 4 листов. Мы можем узнать, какие листы доступны в книге, используя функцию excel_sheets ()

Вывод:

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

Вывод:

Мы можем контролировать, какие ячейки читать 2 способами

  1. Используйте аргумент n_max для возврата n строк
  2. Используйте аргумент диапазона в сочетании с cell_rows или cell_cols

Например, мы устанавливаем n_max равным 5, чтобы импортировать первые пять строк.


Если мы изменим col_names на FALSE, R автоматически создаст заголовки.

В фрейме данных iris_no_header R создал пять новых переменных с именами X__1, X__2, X__3, X__4 и X__5


Мы также можем использовать диапазон аргументов для выбора строк и столбцов в электронной таблице. В приведенном ниже коде мы используем стиль Excel, чтобы выбрать диапазон от A1 до B5.

Вывод:


Во втором примере мы используем функцию cell_rows (), которая управляет диапазоном возвращаемых строк. Если мы хотим импортировать строки с 1 по 5, мы можем установить cell_rows (1: 5). Обратите внимание, что cell_rows (1: 5) возвращает тот же вывод, что и cell_rows (5: 1).

Вывод:


Если мы хотим импортировать строки, которые не начинаются с первой строки, мы должны включить col_names = FALSE. Если мы используем range = cell_rows (2: 5), становится очевидно, что наш фрейм данных больше не имеет заголовка.


Вывод:

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

Вывод:

У нас пропущено 50 значений, которые являются строками, принадлежащими видам сетоз.

Импорт данных из другого статистического программного обеспечения

Мы будем импортировать различные файлы формата с пакетом небес. Этот пакет поддерживает программное обеспечение SAS, STATA и SPSS. Мы можем использовать следующую функцию для открытия различных типов наборов данных в соответствии с расширением файла:

  • SAS: read_sas ()
  • STATA: read_dta () (или read_stata (), которые идентичны)
  • SPSS: read_sav () или read_por (). Нам нужно проверить расширение

В этой функции требуется только один аргумент. Нам нужно знать ПУТЬ, где хранится файл. Вот и все, мы готовы открыть все файлы из SAS, STATA и SPSS. Эти три функции также принимают URL.

В гавань входит conda r-essential, в противном случае перейдите по ссылке или в терминале. conda установите -c conda-forge r-haven

Читать сас

Для нашего примера мы собираемся использовать набор входных данных из IDRE.

Вывод:

Читать STATA

Для файлов данных STATA вы можете использовать read_dta (). Мы используем точно такой же набор данных, но храним его в файле .dta.

Вывод:

Читать SPSS

Вывод:

Лучшие практики для импорта данных

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

  • Типичным форматом электронной таблицы является использование первых строк в качестве заголовка (обычно это имя переменной).
  • Избегайте именовать набор данных с пробелами; это может привести к интерпретации как отдельной переменной. В качестве альтернативы, предпочтите использовать «_» или «-».
  • Короткие имена являются предпочтительными
  • Не включайте символ в имя: то есть: exchange_rate _ $ _ € не правильно. Предпочитаю называть это: exchange_rate_dollar_euro
  • В противном случае используйте NA для пропущенных значений; нам нужно очистить формат позже.

Резюме

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

R (R Core Team 2021) — это язык для статистического анализа и визуализации данных. Он возник как ответвление языка S/Splus, разработанного еще в 70-х годах в Bell Laboratories.

Росс Ихака (Ross Ihaka) и Роберт Джентльмен (Robert Gentleman), молодые ученые из университета Окленда, Новая Зеландия разработали R в 1993 году (Ihaka 1998) .

Роберт Джентльмен и Росс Ихака

Сейчас Росс Ихака занимается статистикой в университете Окленда (Associate Professor). В 2010 году Ихака начал работать над новым языком с целью усовершенствовать R и улучшить его быстродействие (Ihaka 2010) .

Росс Ихака

Роберт Джентльмен работал как ученый и эксперт в нескольких компаниях биотехнологического и генетического профиля, и недавно стал вицепрезидентом компании 23andMe как эксперт в биоинформатике. Еще в 2001 году Роберт Джентльмен начал работать над проектом Bioconductor.

Роберт Джентльмен

Создатели RStudio

RStudio (RStudio Team 2019) — это свободно распространяемая среда для разработки (integrated development environment) на языке R.

RStudio была основана в 2009 году американским программистом и интернет-предпринимателем Джозефом Аллером (Joseph J. Allaire). Среду RStudio можно устанавливать на компьютеры с разными операционными системами (Windows, OS X, and Linux).

Джозеф Аллер

Сейчас RStudio, пожалуй, самый удобный вариант среды для разработки на R. Мне кажется, что бум использования R в начале 10-х годов отчасти объясняется тем, что писать программы стало гораздо удобнее благодаря появлению среды RStudio.

К слову, вторая причина роста популярности R — это появление графического пакета ggplot2 (Wickham 2016) , написанного Хедли Викхемом (Hadley Wickham). Этот пакет во много раз облегчил построение сложных и красивых графиков. С тех пор Хедли Викхем написал еще много полезных пакетов и сейчас работает Chief Scientist в RStudio и Adjunct Professor в университете Окленда.

Хедли Викхем

Для работы над этим курсом вам понадобится установить

Устройство RStudio

RStudio

Окно редактора RStudio разделено на 4 области:

  1. код (зеленый прямоугольник на схеме) - это обычный текстовый редактор, в котором открывают и редактирут файлы с программами.
  2. консоль/RMarkdown (оранжевый прямоугольник на схеме). На вкладке консоль можно в живом режиме выполнять команды R, если вы не хотите их сохранять в виде программы.
  3. файлы/графики/пакеты/помощь/просмотр (желтый прямоугольник на схеме). На вкладке помощь можно просматривать файлы справки. На вкладке графики будут появляться графики. На вкладке файлы расположен файловый менеджер, который позволяет перемещаться по директориям вашего проекта и компьютера.
  4. среда/история (и еще может быть /Git, если ваш проект под контролем версий) (синий прямоугольник на схеме). На вкладке история есть список всех выполненных команд R. На вкладке среда расположен список объектов, находящихся в памяти.

структура RStudio

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

  1. Создайте папку (например, Proteomics ), где будут храниться ВСЕ материалы курса. Например: Мы будем ее называть рабочей директорией. В эту папку помещайте ВСЕ файлы с кодом (с расширением .R).
  2. Внутри папки Proteomics создайте папку data , где будут храниться все файлы с данными для анализа.

В итоге у вас должно получиться примерно это:

Настройка

Все настройки RStudio находятся меню Tools -> Global Options

  • Восстановление рабочено пространства из прошлого сеанса — это лучше отменить, т.к. обычно переменные-призраки очень мешают. На вкладке General убираем галочку Restore .RData into workspace at startup , и меняем Save workspace to .RData on exit - Never .
  • Перенос длинных строк в окне кода — это удобно. На вкладке Code ставим галочку рядом с опцией Soft-wrap R source files .

Клавиатурные сокращения

  • Ctrl + Shift + C - закомментировать/раскомментировать выделенный фрагмент кода.
  • Ctrl + Enter - отправляет строку из текстового редактора в консоль, а если выделить несколько строк, то будет выполнен этот фрагмент кода.
  • Tab или Ctrl + Space - нажмите после того как начали набирать название функции или переменной, и появится список автоподстановки. Это помогает печатать код быстро и с меньшим количеством ошибок.

Автоподстановка названий функций начинает работать как только вы ввели несколько первых букв названия функции. Вы можете вызвать ее раньше, если нажмете Tab или Ctrl + Space .

автоподстановка названий функций в RStudio

Как только вы полностью ввели название функции и скобки, RStudio автоматически ставит закрывающую скобку и показывает раздел справки Usage для этой функции.

автоподстановка аргументов функций в RStudio

Если вы нажмете Tab или Ctrl + Space , когда курсор находится внутри скобок, то вам покажут список аргументов этой функции с расшифровками их значений из раздела справки Arguments для этой функции.

автоподстановка аргументов функций в RStudio

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

Из центрального репозитория R CRAN пакеты можно установить при помощи функции install.packages() , указав имя пакета. Запустите RStudio (с правами администратора, если вы в Windows) и, для начала, установите пакеты ggplot2 и readxl — они нам сегодня понадобятся.

Остальные пакеты мы будем устанавливать по мере необходимости.

Пакеты единожды устанавливаются в локальную библиотеку, затем их нужно активировать для работы один раз за сеанс.

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

Работа с файлами

Загрузка данных в R

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

Рабочую папку можно изменить. Например, так:

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

csv-файлы

Формат csv (comma separated values) - широко распространенный текстовый формат, который используется для представления табличных данных. В качестве разделителя, т.е. символа, который разделяет значения колонок, обычно используется запятая, как и следует из названия.

Но иногда в качестве разделителя могут быть использованы другие символы (точка с запятой, пробел, табуляция). Если мы загрузим файл с другим разделителем и никак это не укажем, что загрузится совсем не то, что мы ожидали:

А если выставим нужный разделитель в качестве параметра, то все будет, как нужно:

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

Можно посмотреть, какая кодировка и какие языки определены системой по умолчанию:

Можно добавить русский язык:

А можно просто спеифицировать кодировку самого файла:

Будем считать, что с csv-файлами разобрались.

txt-файлы

При работе с txt-файлами необходимо указывать, каким образом столбцы отделены друг от друга (аргумент sep , разделитель, как и в случае в csv-файлами), а также учитывать, что представляет собой первая строка: наблюдение или шапку таблицы (аргумент header ). Откроем файл, в котором столбы разделены табуляцией и сравним, как он будет выглядеть при выставлении разных значений параметра header :

Теперь перейдем к другим форматам.

файлы Excel

Чтобы спокойно загружать xls-файлы и xlsx-файлы необходимо установить соответствующие библиотеки xls ( xlsx ).

Установим библиотеку xlsx . С ее установкой могут возникнуть проблемы: R будет писать что-то про rjava. Это обычно бывает, если на компьютере не установлена Java или установлена такая ее версия, которая конфликтует с R (например, недостаточно новая). Тогда Java можно поставить, скачав отсюда. После этого проблема должна исчезнуть.

Теперь обратимся к этой библиотеке - иначе открыть файл мы не сможем:

Наконец, откроем сам файл. Не забудьте указать номер листа после запятой (даже если он всего один), иначе не сработает.

файлы STATA

Для загрузки файлов STATA (файлы с расширением .dta ) потребуется библиотека foreign .

Теперь загрузим dta-файл.

файлы SPSS

Для загрузки файлов SPSS (файлы с расширением .sav ) потребуется библиотека Hmisc .

Сохранение файлов

Выгружаются данные из R аналогичным образом, но только вместо read в названиях функций используется write . Например, сохраним базу df в csv-формате:

Работа с базами данных

Описание базы данных

Загрузим более содержательную базу данных. Базу данных, которая использовалась в исследовании Druckman, Levendusky, McLain No Need to Watch: How the Effects of Partisan Media Can Spread via Inter-Personal Discussions (2017). Файл и codebook к базе данных можно найти здесь.

Какую информацию о базе данных мы можем получить?

Можем определить число наблюдений и число переменных в базе. Узнать это можно точно так же, как и размерность матрицы, ведь число строк - это число наблюдений, а число столбцов - это число переменных.

Можем узнать гораздо больше - структуру базы данных: число наблюдений и переменных, типы переменных и примеры значений, которые они принимают. Сделать это можно с помощью уже знакомой функции str() :

Также легко посмотреть на первые несколько значений:

Пропущенные значения

Посчитаем, сколько полностью заполненных наблюдений:

Соответственно, остальные (из 575) - недозаполненные (содержащие NAs).

Посмотрим на незаполненные строки:

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

Обратимся к ним:

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

Следующий график отвечает за заполненность наблюдений (красным цветом отмечены пропущенные значения, остальное - заполненные значения, чем темнее цвет, тем больше значение). По вертикальной оси - номер строки в базе данных (id наблюдения).

Удаление пропущенных значений

При работе с базами данных необходимо удалить пропущенные значения (или правильно заполнить - кто умеет), потому что иначе мы не сможем полноценно работать с базой (многие функции не работают при наличии NAs, а у некоторых необходимо указывать дополнительный аргумент - учитывать NA или нет).

Выбор переменных

Если мы хотим обратиться к конкретной переменной и рассматривать ее как вектор элементов, нужно использовать символ $ .

Attach и detach

Мы можем “закрепить” базу данных с помощью команды attach, чтобы обращаться к переменным более простым способом:

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

Создание и добавление в базу новых переменных

Допустим, мы хотим добавить в базу переменную Session. Для этого нужно через $ задать имя новой переменной и присвоить ей значение:

Фильтрация наблюдений

Часто при работе с данными возникает необходимость выбрать несколько переменных или определенную группу наблюдений и анализировать их отдельно - чтобы не загружать каждый раз огромную базу с ненужными показателями.

Можем выбрать несколько переменных (столбцов) и сохранить их в другую базу:

Получится маленькая база из трех переменных. И сохраним как новую базу dat1:

Если выбираем столбцы не подряд, обязательно их номера нужно оформить в виде вектора:

В противном случае получится совсем не то:

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

Но таким образом мы можем выбирать строки (наблюдения):

Фильтрация по условиям

Если хотим отобрать из базы определенные наблюдения, это тоже можно сделать с помощью subset() (“фильтры”). Например, хотим выбрать респондентов с определенным уровнем образования:

Для указания нескольких условий опять потребуются логические операторы:

Конечно, можем отбирать наблюдения и переменные одновременно:

Удаление переменных

Чтобы удалить переменные, можно действовать двумя способами:

удалить их из базы

оставить все остальные переменные в базе

По смыслу это одно и то же. И то, и другое чаще всего осуществляется с помощью функции subset() .

Допустим, мы хотим выбрать переменные Educ и Female и сохранить их в новую базу:

Читайте также: