r - 读取单个 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,并且我希望能够执行以下操作:
- 突出显示改进值小于 5 的任何行。
- 根据部门名称将数据导出到不同的 xlsx 文件中。例如,导出的第一个 xlsx 文件将只有 df 中的前 5 行数据,突出显示印度和中国,而导出的另一个文件将有 3 行来自欧洲的数据,突出显示意大利。
任何指针将不胜感激!
解决方案
您可以先创建一个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
推荐阅读
- javascript - 如何从 VueJs 中的选定元素中删除特定的类名?
- python - 使用 itertools.tee 检查下一个元素时如何最小化空间成本?
- html - Unity/PowerUI,阿拉伯语文本呈现不同(呈现的字符与输入不同)
- prolog - PROLOG - 检查文件是否存在
- c# - 如何在 C# 中解析来自 GSM 调制解调器的短信
- git - git:解决分支内的提交?
- node.js - 使用 merge2 -npm 流式传输多个任务时在 Gulp 中出现 TypeError
- android - 如何在 Jetpack 中使用导航启动第二个活动
- .net - 在哪里放置 POCO 验证 - N 层架构
- vba - word中的幻影风格