Экспорт из R в Excel и Word: таблицы и формат
Анализ заканчивается не графиком, а таблицей, которую нужно отдать соавтору, редактору или в отчёт. На этом шаге чаще всего теряются десятичные разделители, кодировка и форматирование чисел.
Ниже — практический порядок выгрузки из R в Excel и Word без ручной пересборки.
Зачем экспортировать из R, а не копировать
Копирование из консоли или просмотрщика теряет типы: числа становятся текстом, даты — строками, а названия колонок ломаются на пробелах.
Скрипт экспорта воспроизводим: при обновлении данных таблицу можно собрать заново с теми же правилами округления и оформления.
Excel: writexl и openxlsx
writexl — минималистичный пакет без зависимостей от Java. Он быстро пишет список таблиц в один файл, но не даёт тонкого оформления.
openxlsx умеет задавать стили, ширину колонок, закрепление строк и формат чисел. Если нужна готовая «человеческая» таблица с заголовками и границами, обычно выбирают его.
Для нескольких листов передайте именованный список: имена станут названиями листов.
Кодировка и разделители
CSV остаётся самым совместимым форматом, но Excel на разных локалях читает разделитель по-разному. В русской локали это точка с запятой, в английской — запятая.
Получить корректный CSV для Excel в R позволяет readr::write_excel_csv(): функция добавляет BOM, и Excel правильно определяет UTF-8. Без BOM кириллица превращается в «кракозябры».
Проверяйте файл не только в R, но и в Excel: открытие в текстовом редакторе ничего не доказывает.
Форматирование чисел
Решите заранее, сколько знаков после запятой нужно в каждой колонке. Разная точность в одной таблице выглядит небрежно и затрудняет сравнение.
Для публикации часто достаточно двух знаков для долей и целых для счётчиков. Не показывайте больше знаков, чем позволяет точность метода.
Если в таблице есть пропуски, задайте единый способ их обозначения: пустая ячейка, «н/д» или прочерк. Смешение вариантов усложняет чтение.
Word: flextable и officer
flextable собирает таблицу с заголовками, объединёнными ячейками, сносками и условным выделением. officer собирает документ целиком: титул, разделы, вставку таблиц и рисунков.
Связка позволяет получить готовый отчёт без копирования вручную. При обновлении анализа документ пересобирается одной командой.
Проверьте после сборки ширину колонок: длинные подписи переносятся и ломают вёрстку страницы.
Защита от формул в данных
Ячейка, начинающаяся с =, +, - или @, может быть воспринята Excel как формула. Если данные пришли извне, это создаёт риск инъекции.
Об этом прямо предупреждает OWASP в описании CSV Injection. Для исследовательских таблиц риск ниже, но привычка экранировать подозрительные строки полезна, особенно если файл уйдёт дальше в организацию.
Что приложить к выгрузке
Короткое описание: какие данные, за какой период, как считаны пропуски и что означают сокращения. Таблица без описания через месяц становится загадкой.
Если таблица идёт в статью, сохраните и версию файла, из которой строились графики: расхождения между таблицей и рисунком замечают быстро.
Частые ошибки
- копирование из консоли вместо экспорта;
- CSV без BOM и потерянная кириллица;
- разные разделители в одной папке;
- числа как текст;
- разная точность в колонках;
- слипшиеся строки из-за ширины колонок;
- отсутствие описания к файлу.
Числа, даты и логические значения
Excel хранит даты как числа с форматом отображения. Если колонка дат попадёт в файл без явного формата, часть значений может стать текстом.
Логические значения экспортируйте как ИСТИНА/ЛОЖЬ или 1/0, но не смешивайте варианты. Для дальнейшей обработки надёжнее 1/0.
Проверка после открытия
Откройте файл на компьютере с другой локалью и посмотрите на числа и даты. Расхождение обнаруживается именно там, а не на вашей машине.
Сверьте число строк: иногда пустая строка в конце или заголовок, записанный дважды, незаметно меняет структуру таблицы.
Скрытые листы и формулы
Если в книге остались формулы, при открытии в другом приложении они могут не пересчитаться. Экспортируйте значения там, где дальнейшая работа с формулами не нужна.
Скрытые листы и большой объём оформления увеличивают файл. Для передачи данных оставляйте только нужное.
Имена листов и структура книги
Имена листов не должны содержать запрещённых символов и превышать лимит длины. Короткие латинские имена надёжнее: они не ломаются при экспорте и в скриптах.
Порядок листов задавайте осмысленно: сводка, затем детали. Читатель открывает книгу и сразу видит главное, а не сырые выгрузки.
Чек-лист
- Формат выбран под задачу: xlsx, CSV или Word.
- Кодировка проверена в целевом приложении.
- Разделитель соответствует локали.
- Точность чисел задана явно.
- Пропуски обозначены единообразно.
- Ширина колонок проверена.
- К файлу приложено описание.
Частые вопросы
Что выбрать: writexl или openxlsx?
writexl проще и быстрее, если нужен только файл с данными. openxlsx — если требуется оформление и форматирование.
Почему в Excel вместо цифр появились даты?
Excel автоматически распознаёт похожие строки. Задайте формат колонки как текстовый или экспортируйте через xlsx с явным типом.
Можно ли сделать таблицу сразу в Word?
Да, через flextable и officer. Это удобно для отчётов, но для правок соавторов иногда проще Excel.
Как передать таблицу в LaTeX?
Есть пакеты для экспорта в LaTeX-таблицы. Проверьте результат в компиляции: переносы и выравнивание могут отличаться.