2017-05-01 110 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 
相關問題