利用 R Markdown 批量制作数据分析报告

简介

最近收到读者的技术求助邮件,如下所示:

对于该问题,在我的 R Markdown 入门教程中没有给出教程(视频见文末),因为算是较为进阶的技术了。我相信看我推文的老读者们应该对 R Markdown 的基础操作有一定了解。并且想将其应用到自动化办公场景中,从而增加办公效率。

所以针对这个问题,小编今天给出一个基础版本的“利用 R Markdown 批量制作数据分析报告”教程,供大家参考。该教程主要参考了:

  1. R Markdown 指南 第 7 章:使用 R Markdown 开展项目工作 ps:这是一本正在写的 R Markdown 中文书籍,未来准备出版,小编有幸参加了部分内容的撰写。有兴趣的读者可以提前阅读。

  2. Iterate multiple RMarkdown reports

注意:制作这个教程花费较长时间,欢迎大家一键三连呀~ 教程对应的项目代码已经开源在 GitHub 中,欢迎 Fork 和 star。或者公众号后台回复[批量制作数据分析报告]免费获得。

问题背景

假设我们得知不同学校学生信息,包括:姓名,身高,体重。如:

领导/硕导/博导 要求分别给出不同学校的学生信息分析报告。此时,可以使用 R Markdown 开展这项工作。

教程

创建文件等基础内容,小编在此省略。实在不会的读者,直接下载我的 Demo 文件夹,修改即可。

创建 .Rmd 文件

首先,给出一个中文.Rmd,该文件可以对不同学校的学生信息进行数据分析,并给出对应的图表和分析结果。为了使得该文件能够自动化导入不同数据集,需要在 YAML 中的 params 参数中加入自定义参数,例如:new_title: A中学。这样通过外部变化改参数,即可修改导入不同学校数据了(注意 YAML 中的字符缩进)。YAML 文件如下所示:

分析报告内容不做过多介绍,包含对该数据的预处理和探索性分析,由于小编科研时间紧张,没有做过多分析,大家可以自行发挥。仅需要注意,

注意:使用 r params$new_title 加载参数,例如:首先,我们加载 r params$new_title 学生的信息。此时编译得到的结果为:

最后生成的 PDF 如下所示:

1

2

3

此时,单个数据分析报告制作完毕,并设置了参数导入不同学校名称。

创建 .R 文件

之后创建一个 .R 文件,目的是重复输入不同学校并编译构建新的数据分析报告。代码截图如下所示:

test.R 文件

library(rmarkdown)
school = c("A中学","B中学")
for(v in school){
  render("中文.Rmd",
         output_file=paste0("result/exploratory_", v, ".pdf"),
         params=list(new_title=v))
}

该代码通过 render() 函数编译刚才写的 中文.Rmd 文件,刚设置的参数 new_title 迭代命名为不同的学校 v,并将编译结果放到对应文件夹内的子文件夹 result 中(注意提前创建该子文件夹)。运行这些代码即可得到批量的数据分析报告:

对比结果

对比下不同数据得到的图表

:::: column
::: column-left

A学校

:::
::: column-right

B学校

:::
::::

:::: column
::: column-left

A学校

:::
::: column-right

B学校

:::
::::

未来展望

  • 对于不同的数据,虽然可以自动化绘制不同的报表,但是由于数据不同,结果也会不同。不同结果如何达到自动化分析呢?这个问题还需要再商讨。个人觉得如果能把类似 ChatGPT 结合起来,或许真能实现自动给出完整的分析报告了。类似的 ChatGPT 的 R 包有:chatgptgptstudio。教程有:12,供参考。

  • 制作该可重复性报告的前提是:不同数据需要一致的数据结构。这点是否可以进行拓展?是否有专门的包能够自动对数据处理,并给出统一的数据格式?

  • 制作这个教程花费较长时间,欢迎大家一键三连呀~ 教程对应的项目代码已经开源在 GitHub 中,欢迎 Fork 和 star。或者公众号后台回复[批量制作数据分析报告]免费获得。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值