首页 > 解决方案 > 读取单个 xlsx 文件,执行条件格式化并导出为 R 中的多个 xlsx 文件

问题描述

初始数据集:

df = data.frame(Division=c("ASIA","ASIA","ASIA","ASIA","ASIA","EUROPE","EUROPE","EUROPE"),
 Country=c("India","China","Japan","Nepal","Laos","France","Italy","Norway"),
 improvement=c(1,3,7,5,9,8,2,7))

我能够将此 xlsx 文件读入 R,并且我希望能够执行以下操作:

  1. 突出显示改进值小于 5 的任何行。
  2. 根据部门名称将数据导出到不同的 xlsx 文件中。例如,导出的第一个 xlsx 文件将只有 df 中的前 5 行数据,突出显示印度和中国,而导出的另一个文件将有 3 行来自欧洲的数据,突出显示意大利。

任何指针将不胜感激!

标签: rloopsformattingexport-to-excel

解决方案


您可以先创建一个openxlsx用于创建工作簿的函数。
然后,您可以split按部门划分数据集,并用于在部门map上调用工作簿创建:

library(openxlsx) 
library(purrr)
library(dplyr)

threshold <- 6

create.workbook <- function(df,threshold) {
 wb <- createWorkbook() 
 highlight.Style <- createStyle(fontColour = "red", fgFill = "yellow")
 addWorksheet(wb, "data")
 writeData(wb, sheet = "data", x = df)
 highlight.rows <- which(df$improvement < threshold)+1
 addStyle(wb, "data", cols = 1:ncol(df), rows = highlight.rows,
          style = highlight.Style, gridExpand = TRUE)
 
 wb.name <- df$Division[1]
 saveWorkbook(wb,paste0(wb.name,'.xlsx'),overwrite = T)
}

df %>% split(.$Division) %>% map(~create.workbook(.x,threshold))

$ASIA
[1] 1

$EUROPE
[1] 1

在此处输入图像描述


推荐阅读