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

简介

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

利用 R Markdown 批量制作数据分析报告_第1张图片

对于该问题,在我的 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 批量制作数据分析报告_第2张图片

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

教程

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

创建 .Rmd 文件

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

利用 R Markdown 批量制作数据分析报告_第3张图片

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

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

最后生成的 PDF 如下所示:

利用 R Markdown 批量制作数据分析报告_第4张图片

利用 R Markdown 批量制作数据分析报告_第5张图片

利用 R Markdown 批量制作数据分析报告_第6张图片

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

创建 .R 文件

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

利用 R Markdown 批量制作数据分析报告_第7张图片

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 中(注意提前创建该子文件夹)。运行这些代码即可得到批量的数据分析报告:

利用 R Markdown 批量制作数据分析报告_第8张图片

对比结果

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

:::: column
::: column-left

A学校

利用 R Markdown 批量制作数据分析报告_第9张图片

:::
::: column-right

B学校

利用 R Markdown 批量制作数据分析报告_第10张图片

:::
::::

:::: column
::: column-left

A学校

利用 R Markdown 批量制作数据分析报告_第11张图片

:::
::: column-right

B学校

利用 R Markdown 批量制作数据分析报告_第12张图片

:::
::::

未来展望

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

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

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

你可能感兴趣的:(R文档沟通,数据分析,r语言,python)