gpt4 book ai didi

r - 如何为具有R减价的数据帧的每个子集创建不同的报告?

转载 作者:行者123 更新时间:2023-12-04 12:38:16 27 4
gpt4 key购买 nike

我有一个看起来像的数据集

 City   Score   Count   Returns
Dallas 2.9 61 21
Phoenix 2.6 52 14
Milwaukee 1.7 38 7
Chicago 1.2 95 16
Phoenix 5.9 96 16
Dallas 1.9 45 12
Dallas 2.7 75 45
Chicago 2.2 75 10
Milwaukee 2.6 12 2
Milwaukee 4.5 32 0
Dallas 1.9 65 12
Chicago 4.9 95 13
Chicago 5 45 5
Phoenix 5.2 43 5

我想使用R markdown建立报告;但是,对于每个城市,我都需要创建一份报告。原因是一个城市看不到另一城市的报告。如何建立报告并保存每个城市的PDF?

每个报告都需要中位数 Score,均值 Count和均值 Returns。我知道使用 dplyr我可以简单地使用
finaldat <- dat %>%
group_by(City) %>%
summarise(Score = median(Score),
Count = mean(Count) ,
Return= mean(Returns))

但是,挫败感来自为每个 City生成报告。同样,这是数据的子集,而不是完整的数据。也就是说,此报告是详尽的报告,是结果的报告,该报告是系统的,对于每个 City均不相同。

最佳答案

看起来 parameterized report 可能是您需要的。有关详细信息,请参见链接,但是基本思想是,在yaml报告的rmarkdown中设置一个参数,并在报告中使用该参数对其进行自定义(例如,在您的情况下,通过City过滤数据)。然后,在一个单独的R脚本中,您多次对报告进行render,对于City的每个值一次,将其作为参数传递给render函数。这是一个基本示例:

Rmarkdown报告中,您将在yaml中声明参数。如果在呈现报告时未输入其他值,则列出的值Dallas在这种情况下仅为默认值:

---
title: My Document
output: pdf_document
params:
My_City: Dallas
---

然后,在同一个 Rmarkdown文档中,您将拥有整个报告-无论计算取决于 City,还是所有 City都相同的样板。您可以使用 params$My_City访问该参数。下面的代码会将数据帧过滤为 My_City参数的当前值:
```{r}
dat %>%
filter(City==params$My_City) %>%
summarise(Score = median(Score),
Count = mean(Count) ,
Return= mean(Returns))
```

然后,在一个单独的R脚本中,您将执行以下操作为每个 City生成一个单独的报告(我假设上面的Rmarkdown文件称为 MyReport.Rmd):
for (i in unique(dat$City)) {
rmarkdown::render("MyReport.Rmd",
params = list(My_City = i),
output_file=paste0(i, ".pdf"))
}

在上面的代码中,我假设 dat数据帧位于呈现 MyReport.Rmd的单独R脚本的全局环境中。但是,您也可以只提供城市名称的向量,而不是从 unique(dat$City)获取名称。

关于r - 如何为具有R减价的数据帧的每个子集创建不同的报告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38572219/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com