2016-11-11 72 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可能会导致此问题。 –

相关问题