Краткий перечень функций для импорта данных

Буфер обмена read.delim2("clipboard")
Excel readxl::read_excel()
CSV read_csv2() или read.csv2()
Прочее read.table(file= ..., header= ..., sep= ..., dec= ...)

Функции read_csv2() и read_excel() устанавливаются с пакетом tidyverse. Остальные входят в базовый R.

Типичными источниками данных могут быть:

  • Файлы Excel.

  • Текстовые табличные файлы с расширением csv, tsv или даже txt.

    Такие файлы иногда выдаются лабораторными приборами. Но основное их преимущество в том, что это обыкновенные текстовые файлы: практически любой файл с данными можно пересохранить в таких форматах, а открыть их можно любым текстовым редактором (хоть “Блокнотом”).

  • Специализированные файлы, создаваемые приборами или программами, рабочие файлы других статистических программ, а также широко используемые форматы xml, json и другие. Существуют пакеты для работы с самыми разными форматами, но универсальным решением будет пересохранить данные в формат CSV.

Файлы, которые нужно прочитать, должны лежать в рабочей директории R1, которую можно напомнить командой getwd(). Можно хранить их в другом месте, тогда при импорте указывается путь относительно рабочей директории. Например, "data/experiment1/results.xlsx". Папка “Документы” в Windows и домашняя папка в MacOS/Linux имеют специальное обозначение “~”, поэтому можно хранить свои данные отдельно от R. Если папку data из примера выше поместить в “Документы”, то путь к файлу будет выглядеть так: "~/data/experiment1/results.xlsx".

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

“Копировать и вставить” из Excel

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

# Windows:
имя_объекта <- read.delim2("clipboard")

# MacOS:
имя_объекта <- read.delim2(pipe("pbpaste"))

# Linux (Ubuntu):
имя_объекта <- read.delim2(pipe("xclip -selection clipboard -o",open="r"))

По умолчанию считается, что верхний ряд импортируемого участка содержит названия столбцов. Если это не так, надо указать параметр header = FALSE.

Таблицы Excel

Используйте функцию read_excel() из пакета readxl (входит в tidyverse). Его надо либо запускать отдельно командой library(readxl), либо указывать перед функцией, как в примере ниже:

имя_объекта <- readxl::read_excel("путь_к_файлу", sheet = номер листа)

# Листы можно указать номером или "именем"

Данные желательно заранее подготовить, “причесать” и поместить на отдельный лист. Так вы значительно облегчите себе жизнь. На случай, если такой возможности нет (скажем, таблица слишком громоздкая и чистить её долго), функция имеет ряд параметров для уточнения выбора. В частности, параметр range= позволяет напрямую указать диапазон ячеек, как в Excel, например “B4:L218” или “list2!B4:L218”.

Верхний ряд импортируемой таблицы должен содержать названия столбцов. Если это не так, добавьте параметр col_names = FALSE.

Файлы CSV

CSV = comma separated values. Это простые текстовые файлы, где столбцы разделяются запятыми, а каждая строка файла — строка таблицы. Так как в русскоязычных программах (в том числе Excel) запятыми разделяются десятичные дроби, то для разметки столбцов может использоваться точка с запятой.

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

Чтение CSV с разделителями — точкой с запятой

Они получаются при экспорте данных из русскоязычного Excel и ряда других программ.

# Функция из tidyverse, создает объект типа tibble
имя_объекта <- read_csv2("путь_к_файлу")

# Функция из базового R, создает объект типа data.frame
имя_объекта <- read.csv2("путь_к_файлу")

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

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

Чтение CSV с разделителями — запятыми

В англоязычных программах десятичные дроби разделяются точками, соответственно будут оформлены и файлы данных. Для них достаточно использовать функции read_csv() или read.csv(), по аналогии с примером выше.

Произвольные файлы

Для всех остальных случаев используйте команду read.table() со следующими основными параметрами:

file= путь к файлу; или “clipboard” (или аналоги) для чтения из буфера обмена
header= если TRUE, первую строку рассматривает как набор заголовков столбцов
sep= символ, разделяющий столбцы, например " ", ",", ";", "\t" (табуляция)
dec= символ, разделяющий десятичные дроби

Экспорт данных и создание файлов

Табличные объекты R, такие как data.frame и tibble, можно сохранить в виде внешнего файла. По принципу работы соответствующие функции похожи на функции импорта.

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

Формат Функция
Excel writexl::write_xlsx(имя_объекта, "путь_к_файлу") — предварительно установите пакет writexl
CSV write.csv2(имя_объекта, "путь_к_файлу")
Буфер обмена write.table(имя_объекта, "clipboard")

Для write.csv2() и write.table() можно применять параметры, описанные выше.


  1. Или в папке проекта, если вы используете эту возможность RStudio↩︎