2017-05-01 83 views

回答

1

,如果你使用的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) 
} 

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

+0

这看起来已经奏效,谢谢。 – user6077819

+0

没问题。你可以将你的问题标记为回答:) – quant

1

您可以使用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 
相关问题