How to create a different report for each subset of a data frame with R markdown? -
i have dataset looks like
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 i build report using r markdown; however, each city need build report. reason 1 city cannot see report city. how build report , save pdf of each city?
each report need median score, mean count, , mean returns. know using dplyr use
finaldat <- dat %>% group_by(city) %>% summarise(score = median(score), count = mean(count) , return= mean(returns)) but frustration comes producing report each city. also, subset of data, not full data. is, report extensive , report of results, systematic, not different each city.
it looks parameterized report might need. see link details, basic idea set parameter in yaml of rmarkdown report , use parameter within report customize (for example, filtering data city in case). in separate r script, render report multiple times, once each value of city, pass parameter render function. here's basic example:
in rmarkdown report declare parameter in yaml. listed value, dallas in case, default value if no other value input when render report:
--- title: document output: pdf_document params: my_city: dallas --- then, in same rmarkdown document have entire report--whatever calculations depend on city, plus boilerplate that's same city. access parameter params$my_city. code below filter data frame current value of my_city parameter:
```{r} dat %>% filter(city==params$my_city) %>% summarise(score = median(score), count = mean(count) , return= mean(returns)) ``` then, in separate r script, following produce separate report each city (where i've assumed rmarkdown file above called myreport.rmd):
for (i in unique(dat$city)) { rmarkdown::render("myreport.rmd", params = list(my_city = i), output_file=paste0(i, ".pdf")) } in code above, i've assumed dat data frame in global environment of separate r script renders myreport.rmd. however, provide vector of city names instead of getting names unique(dat$city).
Comments
Post a Comment