Запись части таблицы в файл Excel с переменным именем листа

Я пишу код, который мне нужен для вывода в виде файла Excel. Поскольку мне нужно сохранить некоторые части таблицы в разных файлах Excel, мой вывод создается внутри цикла for . Примерно так:

  для j = 1: 5 Table = table (ColAA (:, j), ColBB (:, j), ColCC (:, 3 * j-  2: 3 * j), ColWW (:, j));  filename_excel = [имя '_N' num2str (j) '_Seg' num2str (j) '.xlsx'];  Writetable (Table, filename_excel, 'Sheet', j, 'Range', 'A5'); end  

Выходная таблица:

  Table = Var1 Var2 Var3 Var4 ____ ____ ____ ____ 38 71 176 124 43 69 163 109 38 64 131 125 40 67 133 117 49 64 119 122  

там, где я хотел таблица:

  Table = ColAA ColBB ColCC ColWW ____ ____ ____ ____ 38 71 176 124 43 69 163 109 38 64 131 125 40 67 133 117 49 64 119 122  

У меня есть два вопроса относительно приведенного выше кода:

  1. Имя столбцов не будет исходным именем И это просто потому, что нужны какие-то части таблицы. Как я могу иметь исходное имя на выходе?

  2. Сложность для меня заключается в том, что мне нужно сохранять каждый лист внутри цикла с другим именем и с другими индексами. Как это можно было сделать внутри цикла for?


Edit, ошибка с изменением имени листа 4 или 5 (решено)

При изменении порядка команд в цикле for, как указано ниже, код генерирует правильные файлы и переименовывает нужные листы. Это была всего лишь проблема порядка кодирования. Я также понял, что вам не нужно предварительно инициализировать файлы Excel. Проблема заключалась в том, что я сначала попытался изменить имена листов, но листы не были созданы, поэтому ошибка была «индекс вне измерения». Если сначала сохранить таблицу, а потом изменить имена листов, все работает.

  для k = 1: 5 Table = table (ColAA (:, k), ColBB (:  , k), ColCC (:, k), ColWW (:, k), 'VariableNames', Names);  filename_excel = ['имя_N' num2str (k) '_Seg' num2str (k) '.xls'];  Writetable (Таблица, имя_файла_excel, 'Лист', k, 'Диапазон', 'A5');  e = actxserver ('Excel.Application');  % # открыть сервер Activex ewb = e.Workbooks.Open (['C:  Users  common  Documents  MATLAB ', filename_excel]);  % # открыть файл (введите полный путь!) ewb.Worksheets.Item (k) .Name = Sheet_names {k};  % # переименовать 1-й лист в ewb.Save% # сохранить в тот же файл ewb.Close (false) e. Выйти из result1 {k} = Table;  result2 {k} = filename_excel; end  

первое решение ниже (все еще содержащее ошибку)

  ColAA = rand (100,5); ColBB = rand (100,5) * 2; ColCC =  rand (100,5) * 5; ColWW = rand (100,5) * 10; результат1 = ячейка (1,5); результат2 = ячейка (1,5); Имена = {'ColAA', 'ColBB', '  ColCC ',' ColWW '}; Sheet_names = {' test1 ',' test2 ',' test3 ',' test4 ',' test5 '}; для k = 1: 5 Таблица = таблица (ColAA (:, k), ColBB  (:, k), ColCC (:, k), ColWW (:, k), 'VariableNames', Names);  filename_excel = ['имя_N' num2str (k) '_Seg' num2str (k) '.xls'];  xlswrite (filename_excel, 1)% # создать тестовый файл e = actxserver ('Excel.Application');  % # открыть сервер Activex ewb = e.Workbooks.Open (['C:  Users  common  Documents  MATLAB ', filename_excel]);  % # открыть файл (введите полный путь!) ewb.Worksheets.Item (k) .Name = Sheet_names {k};  % # переименовать 1-й лист в ewb.Save% # сохранить в тот же файл ewb.Close (false) e.Quitwritetable (Table, filename_excel, 'Sheet', k, 'Range', 'A5');  результат1 {k} = Таблица;  result2 {k} = filename_excel; end  

Сначала я генерирую свои данные (только случайные числа). Мои два массива результатов предназначены только для проверки работы кода. Так что вы можете просто удалить эти строки. Затем Names содержат имена моих столбцов, которые вы хотите использовать в качестве имен таблиц позже. Sheet_names содержат имена, которые я хочу дать листам.

Затем я добавил строки из ответа yuk на этот вопрос. Чтобы изменить имена листов. Поэтому мне сначала пришлось сгенерировать эти файлы Excel.
Учтите, что мне пришлось изменить вашу индексацию ColCC (:, 3 * j-2: 3 * j) , потому что это не имело смысла (см. ниже) и что я немного изменил имя файла, потому что у меня не было переменной Name

, ранее написанной в комментариях (удалено для удобства чтения)

Также должна быть ошибка в вашем индексе ColCC. 3 * j-2: 3 * j приводит к (1,0), (2,1,0), (5,4,3,2,1,0) и так далее. Во-первых, индекс 0 не разрешен, а во-вторых, у вас каждый раз появляется больше записей …

И постарайтесь НЕ использовать i, j в качестве имен переменных. Они также используются для комплексных чисел. Лучше используйте другую букву или ii, jj!


Ответ на ваш второй вопрос: «Сложность для меня в том, что мне нужно сохранять каждый лист внутри цикла с другим именем и с разными индексами. Как это можно сделать внутри цикла for?» выглядит следующим образом: например: —

  1. A = rand (1,100);
  2. для n = 1:10
  3. filename = sprintf (‘randomfunction_% d.xlsx’, n);
  4. xlswrite (имя файла, A, 1);
  5. end

Вывод: файлы Excel с именами: randomfunction_1, randomfunction_2, …, randomfunction_10.



Пакет R xlsx: краткое руководство по работе с файлами Excel в R

->

    Версия для печати ->

Существует множество решений для импорта и экспорт файлов Excel с помощью R . Различные способы соединения R и Excel уже обсуждались в нашей предыдущей статье [Основы R Excel: чтение, запись и форматирование файлов Excel с помощью R].

пакет xlsx — один из мощных пакетов R для чтения , записи и форматирования файлы Excel . Это решение на основе Java, доступное для Windows, Mac и Linux. Он работает как с форматами файлов Excel 2007 , так и Excel 97/2000/XP/2003 ( xls и xlsx ).

К сожалению, пакет xlsx не особенно хорошо документирован.

Эта статья представляет собой краткое руководство по работе с файлы Excel в R с использованием xlsx package .

В этом руководстве вы узнаете, как использовать пакет xlsx , чтобы:

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

  install.packages ("xlsx") library ("xlsx")  

Обратите внимание, что пакеты xlsx зависят от rJava и x lsxjars R пакеты.

Функции R read.xlsx () и read .xlsx2 () можно использовать для чтения содержимого листа Excel в данные R . .frame.

Разница между этими двумя функциями заключается в следующем:

  • read.xlsx сохраняет данные тип. Он пытается угадать тип класса переменной, соответствующей каждому столбцу на листе. Обратите внимание, что функция read.xlsx работает медленно для больших наборов данных (рабочий лист с более чем 100 000 ячеек).
  • read.xlsx2 работает быстрее с большими файлами по сравнению с функцией read.xlsx.

Упрощенные форматы этих двух функций:

  читать. xlsx (файл, sheetIndex, header = TRUE, colClasses = NA) read.xlsx2 (file, sheetIndex, header = TRUE, colClasses = "character")  

  • file : путь к файлу для чтения.
  • sheetIndex : число указание индекса листа для чтения; например: используйте sheetIndex = 1 для чтения первого листа.
  • header : логическое значение. Если TRUE, первая строка используется как имена переменных.
  • colClasses : вектор символов, представляющий класс каждого столбца.

Примеры:

  файл библиотеки (xlsx)  
  NA.  Доход населения Неграмотность Life.Exp Убийство1 Алабама 3615 3624 2,1 69,05 15,12 Аляска 365 6315 1,5 69,31 11,33 Аризона 2212 4530 1,8 70,55 7,84 Арканзас 2110 3378 1,9 70,66 10,15 Калифорния 21198 5114 1,1 71,71 10,36 Колорадо 2541 4884 0,7 72,06   > 

Обратите внимание, что функции read.xlsx и read.xlsx2 могут использоваться для чтения файлов обоих форматов .xls и .xlsx.

R функции write.xlsx () и write.xlsx2 () могут использоваться для экспорта данных из R в книгу Excel . Обратите внимание, что write.xlsx2 обеспечивает лучшую производительность по сравнению с write.xlsx для очень больших data.frame (с более чем 100 000 ячеек).

Упрощенные форматы этих двух функций:

  write.xlsx (x, file, sheetName = "Sheet1", col.names = TRUE, row.  names = TRUE, append = FALSE) write.xlsx2 (x, file, sheetName = "Sheet1", col.names = TRUE, row.names = TRUE, append = FALSE)  

  • x : data.frame, который будет записан в книгу
  • file : путь к выходному файлу.
  • sheetName : символьная строка, используемая для имени листа.
  • col.names, row.names : логическое значение, определяющее, должны ли имена столбцов/имена строк x записываться в файл.
  • append : логическое значение, указывающее, следует ли добавлять x к существующему файлу.

Примеры :

  библиотека (x  lsx) write.xlsx (USArrests, file = "myworkbook.xlsx", sheetName = "USA Arrests")  

Обратите внимание, что приведенный выше код сохраняет файл Excel в текущем рабочем каталог.

Чтобы добавить несколько данных устанавливает в той же книге Excel, необходимо использовать аргумент append = TRUE . Это показано в следующем коде R:

  # Запишите первый набор данных в новую книгуwrite.xlsx (USArrests, file = "myworkbook.xlsx", sheetName = "USA  -ARRESTS ", append = FALSE) # Добавить второй набор данных в новый рабочий листwrite.xlsx (mtcars, file =" myworkbook. xlsx ", sheetName =" MTCARS ", append = TRUE) # Добавить третий набор данныхwrite.xlsx (Titanic, file =" myworkbook.xlsx ", sheetName =" TITANIC ", append = TRUE)  

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

В этом разделе представлена ​​функция R для простого экспорта нескольких объектов R в книгу Excel за один вызов . Различные объекты (данные) записываются на разных листах из одной книги Excel . Имена объектов используются для наименования различных листов.

Код R функции:

  # ++++++  +++++++++++++++++++++ # xlsx.writeMultipleData # +++++++++++++++++++++++  +++++ # file: путь к выходному файлу # ...: список данных для записи в книгуxlsx.writeMultip  leData  

Эта функция основана на функции, опубликованной на веб-сайте statmethods.

Функция xlsx.writeMultipleData работает для фреймы данных, матрицы, временные ряды и таблицы.

Пример использования:

Используйте приведенный ниже код R для сохранения mtcars (фрейм данных), Titanic (таблица), AirPassengers (временной ряд) и state.x77 (матрица):

  xlsx.writeMultipleData ("myworkbook.xlsx"  , mtcars, Titanic, AirPassengers, state.x77)  

Функция write.xlsx () полезна, когда вы хотите просто записать data.frame в файл xlsx. Цель этого раздела — показать вам, как создать хороший отчет Excel, содержащий таблицу с форматированными данными и графики.

Требуются следующие шаги:

  1. Создайте книгу
  2. Определите некоторые стили ячеек : Цвет шрифта и размер, выравнивание , рамка и формат данных ,…
  3. Напишите таблицу в электронную таблицу Excel, используя стили, определенные на шаге 2.
  4. Сохранить книгу в файл
  5. Открыть и просмотреть полученную книгу

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

Шаг 1/5. Создание новой книги Excel

Можно использовать функцию createWorkbook () . Он работает как с форматами файлов .xls , так и .xlsx .

  # создайте новую книгу для  output # возможные значения для типа: "xls" и "xlsx" wb  

Шаг 2/5. Определите некоторые стили ячеек для формирования книги

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

  • внешний вид заголовок листа
  • вид имен строк и столбцов таблицы данных
  • выравнивание текста для имен столбцов таблицы.
  • границы ячеек вокруг имен столбцов

Функция R CellStyle () можно использовать для создания стилей ячеек. Упрощенный формат функции:

  CellStyle (wb, dataFormat = NULL, alignment = NULL, border = NULL, fill = NULL, font = NULL)   

  • wb : объект книги, возвращенный createWorkbook или loadWorkbook.
  • dataFormat : объект DataFormat
  • выравнивание : a Объект выравнивания
  • border : объект Border
  • font : объект Font

  # Определение стилей ячеек # ++++++++++++++++++++ # Стили заголовка и подзаголовкаTITLE_STYLE  

  1. wb : объект книги, возвращенный createWorkbook или loadWorkbook .
  2. Основные аргументы функции Font () :
    • color : цвет шрифта.
    • heightInPoints : шрифт размер . Обычные значения: 10, 12, 14 и т. Д.
    • isBold, isItalic : логическое указание, должен ли шрифт быть жирным или italic
    • underline : целое число, определяющее толщину подчеркивания . Возможные значения: 0, 1, 2.
    • name : шрифт для использования; например: «Courier New».
  3. Основные аргументы для функции Alignment () :
    • wrapText : логическое указание, следует ли переносить текст.
    • horizontal : горизонтальный выравнивание . Возможные значения: «ALIGN_CENTER», «ALIGN_JUSTIFY», «ALIGN_LEFT», «ALIGN_RIGHT».
    • vertical : вертикальное выравнивание . Возможные значения: «VERTICAL_BOTTOM», «VERTICAL_CENTER», «VERTICAL_JUSTIFY», «VERTICAL_TOP»
    • вращение : числовое значение, определяющее желаемые градусы повернуть текст в ячейке. Значение по умолчанию 0.
  4. Основные аргументы для функции Border () :
    • цвет : цвет границы ; например: color = «red» или color = «# FF0000»
    • position : положение границы . Допустимые значения: «BOTTOM», «LEFT», «TOP», «RIGHT»
    • pen : стиль пера. Допустимые значения: «BORDER_DASH_DOT», «BORDER_DASH_DOT_DOT», «BORDER_DASHED», «BORDER_DOTTED», «BORDER_DOUBLE», «BORDER_HAIR», «BORDER_MEDIUM», «BORDER_MEDIUM_DASH_DOT», «BORDER_MEDIUM_DASH_DOT_DOT», «BORDER_MEDIUM_DASHED», «BORDER_NONE», «BORDER_SLANTED_DASH_DOT »,« ТОЛЩАЯ_ГРАНИЦА »,« ТОЛЩАЯ ГРАНИЦА ».

Шаг 3/5. Запишите данные и графики в книгу

Создайте новый лист в книге

Чтобы добавить данные, первым шагом является создание листа в книга для хранения данных. Это можно сделать с помощью функции creatSheet () :

  # Создать новый лист в таблице  

Добавить заголовок в рабочий лист

Чтобы добавить заголовок, выполните следующие действия:

  1. создать новую строку.
  2. создать ячейку в этой строке, содержащую заголовок.
  3. установить значение ячейки.

Чтобы упростить код R, я написал вспомогательную функцию для добавления заголовка:

  # ++++++++++++++++  ++++++++ # Вспомогательная функция для добавления заголовков # ++++++++++++++++++++++++ # - Sheet: объект листа, содержащий заголовок #  - rowIndex: числовое значение, указывающее строку, которая # содержит заголовок # - title: текст для использования в качестве заголовка # - titleStyle: объект стиля для использования для titlexlsx.addTitle  

Копировать и перед продолжением вставьте код функции xlsx.addTitle в консоль R.

  # Добавьте titlexlsx.addTitle (sheet, rowIndex = 1, title = "Факты о штате США",  titleStyle = TITLE_STYLE) # Добавить подзаголовок titlexlsx.addTitle (s  heet, rowIndex = 2, title = "Наборы данных, относящиеся к 50 штатам США.", titleStyle = SUB_TITLE_STYLE)  

Добавить таблицу в рабочий лист

Функцию addDataframe () можно использовать для добавления таблицы на новый лист.

state.x77 таблица данных используется в следующем примере:

  head (state.x77)  
  Население Доход Безграмотность Life Exp Убийство HS Grad Frost Area Алабама 3615 3624 2,1 69,05 15,1 41,3 20 50708 Аляска 365 6315 1,5 69,31 11,3 66,7 152 566432 Аризона 2212 4530 1,8 70,55 7,8 58,1 15 113417 Арканзас 2110 3378,9 70,66 511 39 Калифорния  1.1 71.71 10.3 62.6 20 156361Colorado 2541 4884 0.7 72.06 6.8 63.9 166 103766  
  # Добавить tableaddDataFrame (state.x77, sheet, startRow = 3, startColumn = 1  , colnamesStyle = TABLE_COLNAMES_STYLE, rownamesStyle = TABLE_ROWNAMES_STYLE) # Изменить ширину столбца setColumnWidth (sheet, colIndex = c (1: ncol (state. x77)), colWidth = 11)  

  • Аргументы для функции addDataFrame () :
    • startRow , startColumn : числовое значение, указывающее начальную строку и столбец
    • colnameStyle , rownameStyle : объект CellStyle для настройки заголовка таблицы и имен строк.
  • Аргументы для функции setColumnWidth () :
    • colIndex : числовой вектор, указывающий столбцы, в которых вы хотите изменить размер.
    • colWidth : ширина столбца.

Добавить график на лист Excel

  # создать график png plotpng ("boxplot.png", height = 800, width =  800, res = 250, pointsize = 8) boxplot (count ~ spray, data = InsectSprays, col = "blue") dev.off () # Создайте новый лист, содержащий график  

Шаг 4/5. Сохраните книгу Excel на диск

  # Сохраните книгу в файлеaveWorkbook (wb, «r-xlsx-report-example.xlsx»)  

Шаг 5/5. Откройте и просмотрите полученную книгу Excel.

Перейдите в текущий рабочий каталог и откройте созданную книгу.

Как упоминалось выше, форматировать рабочие листы Excel можно легко и быстро с помощью пакета r2excel . Пакет r2excel описан в моем предыдущем посте: R Основы Excel: чтение, запись и форматирование файлов Excel с помощью R

полный сценарий R для создания красивого отчета в Excel

Полный сценарий R для создания книги выше:

  library (xlsx) # create a  новая книга для выходных данных # +++++++++++++++++++++++++++++++++++ # возможные значения для типа: "xls  "и" xlsx "wb  

Этот анализ был выполнен с использованием R (версия 3.1.0) .

Понравилась эта статья? Буду очень благодарен, если вы поможете ему распространиться, отправив его другу по электронной почте или поделившись им в Twitter, Facebook или Linked In.

Покажи мне немного любви с кнопками «Нравится» ниже … Спасибо и, пожалуйста, не забудьте поделиться и прокомментировать ниже !!

Avez vous aimé cet статья? Je vous serais très recnaissant si vous aidiez à sa diffusion en l’envoyant par courriel à un ami or le partageant на Twitter, Facebook или Linked In.

Montrez-moi un peu d’amour avec les like ci-dessous … Merci et n’oubliez pas, s’il vous plaît, departager et de commenter ci-dessous!

->

Рекомендуем вам!


Основы машинного обучения: Практическое руководство в R

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

Практическое руководство по методам главных компонентов в R

R Graphics Essentials для отличной визуализации данных

Сеть Анализ и визуализация в R


Другие книги по R и наука о данных

Рекомендуем вам

Этот раздел содержит лучшие ресурсы по науке о данных и саморазвитию, которые помогут вам на вашем пути.

Coursera — онлайн-курсы и специализация

Data science

  • Курс: Машинное обучение: освоите основы от Standford
  • Специализация: наука о данных, Университет Джона Хопкинса.
  • Специализация: Python для всех, Мичиганский университет.
  • Курсы: курс Coursera по развитию навыков для лучшей работы в любой отрасли
  • Специализация: Магистр основ машинного обучения Вашингтонского университета.
  • Специализация: статистика с R, Университет Дьюка.
  • Специализация: Разработка программного обеспечения на языке R, автор Университет Джона Хопкинса
  • Специализация: наука о геномных данных. Автор: Дж. Университет Хопкинса

В 2020 году запущены популярные курсы

  • Google IT Automation с Python от Google
  • ИИ для медицины путем углубленного обучения. ai
  • Эпидемиология в практике общественного здравоохранения, Университет Джона Хопкинса.
  • Основы AWS от Amazon Web Services

Курсы трендов

  • Наука о благополучии, Йельский университет
  • Специалист по ИТ-поддержке Google от Google
  • Python для всех, автор Мичиганский университет
  • Профессиональный сертификат IBM Data Science Professional от IBM
  • Business Foundations от Пенсильванского университета
  • Введение в психологию от Йельского университета
  • Excel Skills for Business от Университета Маккуори
  • Первая психологическая помощь от Университета Джона Хопкинса
  • Графический дизайн от Cal Arts

Книги — Наука о данных

Наши книги

  • Практическое руководство по кластерному анализу в R, А. Кассамбара (Datanovia )
  • Практическое руководство по методам главных компонентов в R от А. Кассамбара (Датановия)
  • Основы машинного обучения: Практическое руководство по R от А. Кассамбара (Датановия)
  • R Основы графики для великолепной визуализации данных А. Кассамбара (Datanovia)
  • Основы GGPlot2 для визуализации отличных данных в R А. Кассамбара (Datanovia)
  • Сетевой анализ и визуализация in R А. Кассамбара (Datanovia)
  • Практическая статистика в R для сравнения групп: числовые переменные А. Кассамбара (Datanovia)
  • Основы межрейтерной надежности: Практическое руководство по R от А. Кассамбара (Datanovia)

Others

  • R for Data Science: Import, Tidy, Transform, Визуализация и моделирование данных Хэдли Уикхэм и Гарретт Гролмунд.
  • Практическое машинное обучение с помощью Scikit-Learn, Keras и TensorFlow: концепции, инструменты и методы для создания интеллектуальных систем. Автор: Орельен Жерон
  • Практическая статистика для специалистов по данным: 50 основных концепций Питера Брюса и Эндрю Брюса
  • Практическое программирование с помощью R: напишите свои собственные функции и моделирование Гаррета Гролемунда и Хэдли Уикхема
  • Введение от Ion к статистическому обучению: с приложениями на языке R Гарета Джеймса и др.
  • Глубокое обучение с помощью R Франсуа Шоле и Дж. Дж. Allaire
  • Глубокое обучение с Python от Франсуа Шоле

Хотите узнать больше о программировании на R и науке о данных?

Подписывайтесь на нас по электронной почте в социальных сетях:

Примите участие:
Нажмите, чтобы подписаться на нас на Facebook и Google+:
Прокомментируйте эту статью , нажав кнопку «Обсуждение» (вверху справа на этой странице)
Оцените статью
clickpad.ru
Добавить комментарий