我有一本工作簿,里面有10张纸:一半的活页上有“调查”这个词,另一半的活页上有“人口普查”这个词。
我想在所有在工作表名称中有“调查”一词的工作表中阅读,并将它们附加到单独的工作簿中。
表格名称是: WA调查,测量MD,DC调查,VA调查,调查GA。
我所拥有的:
library(XLConnect)
wb <- loadWorkbook("Data.xls")
dataMD <- readWorksheet(wb, sheet = "Survey MD", startCol = 1, endCol = 10)
dataWA <- readWorksheet(wb, sheet = "Survey WA", startCol = 1, endCol = 10)
dataDC <- readWorksheet(wb, sheet = "Survey DC", startCol = 1, endCol = 10)
dataVA <- readWorksheet(wb, sheet = "Survey VA", startCol = 1, endCol = 10)
dataGA <- readWorksheet(wb, sheet = "Survey GA", startCol = 1, endCol = 10)
total <- merge(dataMD,dataWA,dataDC,dataVA,dataGA,by="ID")我怎么才能让这件事更简单呢?我希望我能用3-4行完成这个任务?
发布于 2018-06-20 16:44:11
您可以像这样使用readxl包,并在一次读取所有内容之前过滤“调查”数据表。
library(readxl)
# file including path if needed
file <- "Data.xls"
# read the sheets and only keep the Survey sheets
sheets <- excel_sheets(file)
sheets <- sheets[grep("Survey", sheets)]
# read the data, only first 10 columns (A:J)
excel_data <- lapply(sheets, read_excel, path = file, range = cell_cols("A:J") )最后你会得到一个数据列表。如果所有列都相同,则可以使用do.call("rbind", excel_data)或dplyr::bind_rows
发布于 2018-06-20 16:20:59
可以使用工作表名定义对象,然后使用lapply获取导入的Excel文件列表。
sheets <- paste("Survey", c("MD", "WA", "DC", "VA", "GA"))
excel.list <- lapply(sheets, function(x)
readWorksheetFromFile("Data.xls", sheet=x, startCol=1, endCol=10))现在,您可以对这个列表进行处理,以获得您想要的最终data.frame。
考虑使用do.call(rbind, Excel.list))当且仅当您的所有Excel工作表都包含相同顺序的变量。
https://stackoverflow.com/questions/50952713
复制相似问题