将多个Excel工作表合并到单个数据框中,使用工作表名称作为第一列,R

我有一个Excel工作簿,其中包含19张表,名称Sheet1到Sheet19。 我想将全部19张纸导入到一个R data.frame中,并将纸张名称作为第一列。 所以我最终会得到像这样的东西:

我想为数据框的结构的Excel呈现

谢谢。

在这里输入图像说明

如果使用data.table而不是data.frame会更容易。 所以假设你的xlsx文件被称为Book1.xlsx这应该工作

 df <- data.table() for (i in 1:19) { sheet <- paste0("Sheet",i) temp.df <- as.data.table(read.xlsx(file = "Book1.xlsx",sheetIndex = sheet)) temp.df[,sheetname:=i] enter code here df <- rbind(df,temp.df) } 

请记住,每个表中的列名称必须相同。

您可以使用像下面这样的readxl :我有一个excel工作表“Book1.xlsx”,该工作簿中的所有三个工作表都具有相似的格式。 我在三张表中列a,b和c。 您不必指定名称,“工作表”对象将携带您的工作表名称。 另外,请注意,使用lapply会迭代你的工作表,然后我们可以追加它来获得最终的数据框

我的假设 :你们所有的床单结构在本质上是相似的。

 library(readxl) library(tidyverse) setwd("C:\\Users\\pradeep4.kumar\\Desktop") ###set your working directory where your data resides sheet = excel_sheets("Book1.xlsx") df = lapply(setNames(sheet, sheet), function(x) read_excel("Book1.xlsx", sheet=x)) df = bind_rows(df, .id="Sheet") 

输出示例:

 > data.frame(df) Sheet abc 1 Sheet3 17 59 82 2 Sheet3 17 26 84 3 Sheet3 92 33 17 4 Sheet3 12 60 16 33 Sheet2 50 27 42 34 Sheet2 47 75 49 35 Sheet2 94 44 20 36 Sheet2 79 23 55 37 Sheet2 35 35 5 38 Sheet2 30 74 29 39 Sheet1 2 95 81 40 Sheet1 89 65 30