前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >R语言技巧 - 多sheet文档读取并合并输出

R语言技巧 - 多sheet文档读取并合并输出

原创
作者头像
叶子Tenney
发布2023-02-26 22:06:22
1.1K0
发布2023-02-26 22:06:22
举报
文章被收录于专栏:叶子的数据科技专栏

title: R语言技巧 - 多sheets文档读取并合并输出

tags:

  • Rundefined
  • Excel categories: R语言技巧 date: Feb 26, 2023 at 21:12:11 author: yeyezi subject: R语言技巧 - 多sheets文档读取并合并输出

偶尔我们会遇到将多个sheets合并为一个的需求, 但是如果有几十个sheets合并起来既容易出错又麻烦, 有些时候文档内格式还不统一, 所以用代码跑就对了.

代码如下:

代码语言:text
复制
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")

效果对比

原文档:

image.png
image.png

处理后:

image.png
image.png

稍事修改:

image.png
image.png

当然如果相对分sheet中的表格进行操作也是可以的, 只需要改动其中提取的循环内容就可以:

代码语言:text
复制
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,"省份"] <- "省份"
}

最终效果图:

image.png
image.png

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 代码如下:
  • 效果对比
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档