library(flexdashboard) knitr::opts_chunk$set(echo = TRUE)
SummaryWidget reports summary statistics for a data set linked with Crosstalk-compatible HTML widgets within an R Markdown page or Shiny app.
To begin, install the summarywidget
and crosstalk
packages:
devtools::install_github("kent37/summarywidget") devtools::install_github("rstudio/crosstalk")
The crosstalk
package includes widgets which control selection within a dataset.
You may also want to use other Crosstalk-compatible widgets; the Crosstalk documentation has a list. To keep this guide simple,
it uses a single crosstalk::filter_checkbox
for selection.
Crosstalk links widgets through an instance of crosstalk::SharedData
. Here,
we share the mtcars
data set.
library(crosstalk) shared_mtcars = SharedData$new(mtcars)
A crosstalk::filter_checkbox
allows selection from a categorical variable
such as the Cylinders
column of the shared_mtcars
data.
filter_checkbox("cyl", "Cylinders", shared_mtcars, ~cyl, inline = TRUE)
Create a summarywidget
with a reference to the shared data.
The summarywidget
default statistic is a simple count of selected items.
Click the checkboxes above to see the count change below.
library(summarywidget) summarywidget(shared_mtcars)
A summarywidget
can display a count, arithmetic mean or sum. To display
a sum or mean you must also specify the column to summarize. Here we show
the mean MPG for the selected cars. The digits
parameter controls the number
of decimal digits displayed.
summarywidget(shared_mtcars, statistic='mean', column='mpg', digits=1)
You can also apply a filter to the initial data set and display a summary restricted to the filtered data. Here we show the count of selected cars with automatic transmission.
summarywidget(shared_mtcars, selection=~am==0)
Putting it all together, this example shows the average MPG for selected cars with automatic transmission.
summarywidget(shared_mtcars, 'mean', 'mpg', selection=~am==0, digits=1)
The output of summarywidget
is enclosed in a <span>
tag so you can use it inline
in text. See the Introduction for an example.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.