Поместите несколько листов Excel в один граф без повторения read.xlsx

У меня есть файл Excel с тремя листами: лист 1, лист 2, лист 3. На каждом листе есть столбец x и y. Я хочу поместить три сюжета xy в один сюжет, как показано ниже

введите описание изображения здесь

То, что я сделал, было прочитано на каждом листе отдельно, и «plot + lines».

Есть ли какой-нибудь метод цикла? Потому что у меня будет более трех листов.

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

Вот пример с простым файлом Excel с именем test.xlsx который я создал. Он имеет три листа, каждый с четырьмя рядами данных, как показано ниже. В коде предполагается, что файл Excel находится в текущем рабочем каталоге. Если нет, укажите соответствующий путь к файлу при чтении данных. Я использовал пакет readxl для чтения данных. Этот метод обобщает книгу Excel с любым количеством листов с одинаковыми именами столбцов (хотя вы могли бы выполнять дополнительную обработку для обработки разных имен столбцов в разных листах).

 library(readxl) library(dplyr) library(ggplot2) # Get sheet names sht = excel_sheets("test.xlsx") sht 
 [1] "Sheet 3" "Sheet 2" "Sheet1" 
 # Read each sheet into a list df = lapply(setNames(sht, sht), function(s) read_excel("test.xlsx", sheet=s)) df 
 $`Sheet 3` xy 1 1 10 2 2 11 3 3 12 4 4 13 $`Sheet 2` xy 1 1 5 2 2 6 3 3 7 4 4 8 $Sheet1 xy 1 1 1 2 2 2 3 3 3 4 4 4 
 # Convert to a single data frame with a column for the source sheet df = bind_rows(df, .id="Sheet") # Plot ggplot(df, aes(x,y,colour=Sheet)) + geom_line() + scale_y_continuous(limits=c(0,max(df$y))) + theme_classic() 

введите описание изображения здесь

Другим способом может быть использование library(xlsx) , у нее есть функция, называемая getSheets которая может указать вам имя и количество листов, которые у вас есть в книге. Я читаю имена листов, а затем использую их для создания списка данных для всех листов. Я объединять эти данные в длинный формат, который будет использоваться с ggplot позже.

 library(xlsx) setwd("/Users/pradeepkumar/Desktop/Misc") ###set your working directory where your data resides sheetname <- getSheets(loadWorkbook("Workbook1.xlsx")) s1 <- lapply(names(sheetname),function(x)read.xlsx("Workbook1.xlsx",sheetName = x)) names(s1) <- names(sheetname) final_data <- data.frame(do.call("rbind",s1 )) sheets <- rownames(final_data) sheets <- gsub("\\.\\d{1,}","",sheets) final_data$sheets <- sheets rownames(final_data) <- NULL library(ggplot2) ggplot(data=final_data,aes(x=x,y=y,color=sheets)) + geom_line() 

Например, у меня есть рабочая книга (Workbook1.xlsx) с тремя листами (1, 2 и 3)

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

введите описание изображения здесь

  • Изменение формата файла «Различный формат, чем расширение файла» в Excel
  • Чтение данных из XLSX в c #
  • Пользовательский формат даты XLSX, считанный как String
  • Ошибка при печати data.frame в excel с использованием пакета XLSX в R
  • Обслуживание файла Excel (xlsx) пользователю для загрузки в Django (Python)
  • Как открыть / прочитать защищенный паролем файл xls или xlsx (Excel) с помощью python в Linux?
  • Delphi System.Zip xlsx LibreOffice
  • Преобразование xls в xlsx в java
  • Преобразование таблицы CSV в Excel
  • Как форматировать тип ячейки с помощью xlsx4j?
  • строка excel разделяется запятыми
  • Interesting Posts

    Файл Excel Не сохранять в указанном месте

    Excel VBScript работает пакетный и передающий аргументы

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

    Excel VBA: ограничение рабочей книги на локальный макрос

    Использование для if, если в Excel VBA подсчитывать значения ячеек до последней строки, но в то же время хотят сделать это менее 30

    Объект листа Excel не совпадает с одним и тем же объектом листа

    Добавление строк в конец документа excel с использованием OpenXmlSDK c #

    Удаление строк в foreach

    VBA MailMerge из Excel – сообщение об ошибке, ожидающее действия OLE

    Добавить сложные формулы в диапазон

    повторение сценария, зависящего от диапазона переменных

    Excel VBA workheet.select (false) перестает работать таинственно

    Ускорить Большой макрос

    Excel: как окрасить ячейки на основе цвета других ячеек, имеющих одинаковое значение в диапазоне?

    Как получить последний символ строки с помощью функции Excel?

    Давайте будем гением компьютера.