title: R语言技巧 - 多sheets文档读取并合并输出
tags:
偶尔我们会遇到将多个sheets合并为一个的需求, 但是如果有几十个sheets合并起来既容易出错又麻烦, 有些时候文档内格式还不统一, 所以用代码跑就对了.
rm(list = ls())
library(librarian)
shelf(openxlsx, dplyr, plyr)
setwd("Project/EXCEL/")
shtnames <- readxl::excel_sheets("EXCEL O.xlsx")
xlsxlist <- list()
for (i in seq_along(shtnames)) {
xlsxlist[[i]] <- read.xlsx("EXCEL O.xlsx", sheet = i, startRow = 1, colNames = FALSE, rowNames = FALSE) # %>% class() %>% print
assign(shtnames[i], xlsxlist[[i]])
xlsxlist[[i]] <- rbind(
matrix(c(shtnames[i], rep(NA, ncol(xlsxlist[[i]]) - 1)), nrow = 1) %>% data.frame(),
xlsxlist[[i]]
)
}
# View(xlsxlist)
dat <- do.call(plyr::rbind.fill, xlsxlist)
openxlsx::write.xlsx(dat, "EXCEL.xlsx", colWidths = "auto")
原文档:
处理后:
稍事修改:
当然如果相对分sheet中的表格进行操作也是可以的, 只需要改动其中提取的循环内容就可以:
for (i in seq_along(shtnames)) {
xlsxlist[[i]] <- read.xlsx("各省高校经费预算 O.xlsx", sheet = i, startRow = 1, colNames = FALSE, rowNames = FALSE) # %>% class() %>% print
assign(shtnames[i], xlsxlist[[i]])
xlsxlist[[i]]$"省份" <- shtnames[i]
xlsxlist[[i]] <- rbind.fill(
matrix(c(shtnames[i], rep(NA, ncol(xlsxlist[[i]])-1)), nrow = 1) %>% data.frame(),
xlsxlist[[i]]
)
xlsxlist[[i]][2,"省份"] <- "省份"
}
最终效果图:
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。