我有一个Excel工作簿,其中包含19张工作表,名称从Sheet1到Sheet19。我想将全部19张纸导入到一个R data.frame中,并将纸张名称作为第一列。所以,我最终会是这样的:将多个Excel工作表合并到单个数据框中,工作表名称为第一列,R
结构的Excel移交我想为数据帧
谢谢。
我有一个Excel工作簿,其中包含19张工作表,名称从Sheet1到Sheet19。我想将全部19张纸导入到一个R data.frame中,并将纸张名称作为第一列。所以,我最终会是这样的:将多个Excel工作表合并到单个数据框中,工作表名称为第一列,R
结构的Excel移交我想为数据帧
谢谢。
,如果你使用的data.table
代替data.frame
会更容易些。因此,假设你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 a b c
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
这看起来已经奏效,谢谢。 – user6077819
没问题。你可以将你的问题标记为回答:) – quant