2016-11-11 107 views
-1

假設我有一個名爲report.xlsx的excel文件。這個文件有10張,方便地命名爲Sheet1到Sheet10。在每一張表上,第14行都有列標題:S/N,RegistryNr,Surname,FirstName,(空),FatherName,MotherName,性別,(空),DOB。我怎樣才能將每張紙合併成一個數據集?如何合併r中的多個excel工作簿?

我知道用excel_sheets("report.xlsx")我可以將所有表格名稱放入一個向量中。

我知道用df <- read_excel("report.xlsx", 1, skip = 14)我可以將一張紙上的所有數據轉換爲數據幀df。

這是我的知識在R上的程度:/

如何合併上述命令導入每片爲相同的數據幀?

+2

只要寫一個for循環,通過循環牀單,像'(因爲我在1:14){DF < - rbind(DF,read_excel (「report.xlsx」,i,skip = 14))}' – ytk

+0

@ytk謝謝!這就是我一直在尋找的! –

回答

-1
library(data.table) 
library(foreach) 

xls.files = dir(pattern = "xls") 

l = foreach(i = 1:length(xls.files)) %do% { 

    f = read_excel(xls.files[i]) 
    setDT(f) 

    f[, label := xls.files[i]] 

} 

rbindlist(l) 

(foreach的優點是你可以設置一個並行後端)。

2

我經常做到這一點使用purrr和readxl:

library(purrr) 
library(readxl) 

file <- 'path to report.xlsx' 

sheets <- excel_sheets(file) 

df <- map_df(sheets, ~ read_excel(file, sheet = .x, skip = 14)) 
+0

我得到錯誤'在eval(替代(expr),envir,enclos)錯誤:損壞的數據框「 –

+0

在您的標題中有NA可能會導致此問題。 –

相關問題