| Буфер обмена | 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 (или другом табличном редакторе) нужный участок, скопируйте, затем выполните в R следующую команду:
# Windows:
имя_объекта <- read.delim2("clipboard")
# MacOS:
имя_объекта <- read.delim2(pipe("pbpaste"))
# Linux (Ubuntu):
имя_объекта <- read.delim2(pipe("xclip -selection clipboard -o",open="r"))
По умолчанию считается, что верхний ряд импортируемого участка
содержит названия столбцов. Если это не так, надо указать параметр
header = FALSE.
Используйте функцию read_excel() из пакета
readxl (входит в tidyverse). Его надо либо запускать
отдельно командой library(readxl), либо указывать перед
функцией, как в примере ниже:
имя_объекта <- readxl::read_excel("путь_к_файлу", sheet = номер листа)
# Листы можно указать номером или "именем"
Данные желательно заранее подготовить, “причесать” и поместить на
отдельный лист. Так вы значительно облегчите себе жизнь. На случай, если
такой возможности нет (скажем, таблица слишком громоздкая и чистить её
долго), функция имеет ряд параметров для уточнения выбора. В частности,
параметр range= позволяет напрямую указать диапазон ячеек,
как в Excel, например “B4:L218” или “list2!B4:L218”.
Верхний ряд импортируемой таблицы должен содержать названия столбцов.
Если это не так, добавьте параметр col_names = FALSE.
CSV = comma separated values. Это простые текстовые файлы, где столбцы разделяются запятыми, а каждая строка файла — строка таблицы. Так как в русскоязычных программах (в том числе Excel) запятыми разделяются десятичные дроби, то для разметки столбцов может использоваться точка с запятой.
Преимущество этого формата в том, что большинство программ, создающих или обрабатывающих данные, могут преобразовать свои файлы в CSV.
Они получаются при экспорте данных из русскоязычного Excel и ряда других программ.
# Функция из tidyverse, создает объект типа tibble
имя_объекта <- read_csv2("путь_к_файлу")
# Функция из базового R, создает объект типа data.frame
имя_объекта <- read.csv2("путь_к_файлу")
В обоих случаях первая строка считается заголовками столбцов. Чтобы
отключить это, используйте параметры col_names = FALSE или
header = FALSE для первой и второй функции
соответственно.
Первая функция выводит отчет о том, какой формат она определила для
каждого столбца. Вторая функция (базовая) этого не делает и имеет
неприятное, хоть и отключаемое свойство насильно превращать текстовые
столбцы в факторные. Поэтому практичнее использовать
read_csv2.
В англоязычных программах десятичные дроби разделяются точками,
соответственно будут оформлены и файлы данных. Для них достаточно
использовать функции 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() можно
применять параметры, описанные выше.
Или в папке проекта, если вы используете эту возможность RStudio↩︎