Winners of the 2021 Table Contest

[This article was first published on RStudio | Open source & professional software for data science teams on RStudio, and kindly contributed to R-bloggers]. (You can report issue about the content on this page here)
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.

2021 RStudio Table Contest. Put the able in table

We are excited to announce this year’s winners of the 2021 RStudio Table Contest.

Display tables are a fundamental way we summarize and communicate information. But in many instances, these are boring and created without as much thought as they deserve. Until recently, customizing and styling a table to make it just right could be a painful and time-consuming experience.

But not today. We now have numerous R packages at our disposal to generate well-designed and beautiful presentation tables. And this community has gone out of its way to share some great examples and tutorials on how to do this.

Evaluation and Judging

Submissions were evaluated based on technical merit and artistic achievement. We would like to thank all of this year’s judges. Thank you to Greg Lin, Tom Mock, Samantha Toet, and Isabella Velásquez for all your help in evaluating submissions and your thoughtful comments.

Types of Submissions

  • Single Table Example: These may highlight interesting structuring of content, useful and tricky features, or serve as an example of a common table popular in a specific field. All submissions include well-organized, documented code reproducing the table.
  • Tutorial: It’s all about teaching us how to craft an excellent table or understand a package’s features. These may include several tables and include narrative.

Categories – We placed tables into one of the following categories:

  • Interactive HTML – An HTML table, built with R, with interactivity.
  • Interactive Shiny – Interactive tables built with Shiny.
  • Static – Tables that do not have interactive elements. These may be designed for print or HTML.

The Winner

Screenshot of table showing details of satellites around the earth

Satellites – by Vladislav Fridkin – interactive / Shiny

An interactive table of satellites built with Shiny, {reactable}, and {gt}

There might be prettier ways to show the 1000s of satellites orbiting us, but how does one effectively organize all the associated data? This Shiny app generates a table summarizing data associated with a selection of satellites. This seems like a really smart way to engage interested people into exploring this type of data.


Runner Up

Screenshot of tablewith the ten most cultivated crops of the world

One Farm – by Benjamin Nowak – static / HTML

A set of static tables that look like they were ripped out from the pages of a magazine!

These tables are beautifully designed and they present a lot of information in a very digestible way. Love the use of hierarchy, color, and text with plots/images.


Honorable Mentions

Screenshot of table showing descriptive analytics for a dataset and interactive figures

Describer: An Interactive Table Interface for Data Summaries – by Agustin Calatroni, Rebecca Krouse and Stephanie Lussier – interactive / HTML

A dream come true for summarizing and inspecting datasets!

A capable tool in a Shiny app for summarizing any dataset. A lot of information is accessible and easily scannable in the default view and the small plots are welcomed and extremely useful. That it handles variable descriptions and provides detailed summaries is a great achievement.


Screenshot of table showing air quality monitoring summary with associated maps

Using {gt} and {openair} to Present Air Quality Data – by Jack Davison – static / HTML

Tabulated air quality summaries from the legendary {openair} package.

This tutorial provides an introduction to gt and is aimed toward air quality professionals that already have some foundation in R. It shows how to take outputs from the well-established {openair} package and present them effectively in tables with {gt} and {gtExtras}.


Screenshot of table showing data summary statistics

Presentation-Ready Data Summary – by Michael Curry and Daniel Sjoberg – static / tutorial

An informative package vignette for creating a compelling data summary.

This is from the authors of the {gtsummary} package. Turns out, you can do a lot after introducing a dataset to the tbl_summary() function. Customizations galore here folks.


Screenshot of clinical study reports bookdown

R for Clinical Study Reports and Submission – by Yilong Zhang, Nan Xiao, and Keaven Anderson – static / tutorial

If you’re in Pharma and making tables, make sure to read this thoroughly.

It’s rare that we get guidance on anything but if you’re responsible for creating tables for regulatory submissions in the Pharmaceutical Industry, then this online book is for you.


Screenshot of Rick and Morty characters in a table

Fast Big Data Tables in Shiny – by Ryszard Szymański – interactive / tutorial

Big and fast tables?! Well, that’s a dream come true and we have Shiny and Plumber to thank for it.

If you have some pretty large data you can benefit from pagination from external resources. Thanks to Plumber, this is relatively easy. Thanks to Shiny, we can make it all highly interactive. Thanks to the myriad characters in Rick and Morty, we have a lot of records in the example app.


Screenshot showing tables with sparklines

Sparklines with {reactablefmtr} – by Kyle Cuilla – static / tutorial

This was once very hard to do. Not anymore!

There are times when you want little plots to go inside a table. Might as well make it sparky. Thanks to {reactablefmtr}, a package that makes it easy to format reactable tables, you can do this with ease!


Screenshot showing most successful riders in the Tour De France with flags, pictograms, and bar charts

Riding Tables with {gt} and {gtExtras} – by Benjamin Nowak – static / tutorial

Learn a lot about {gt} and {gtExtras} and create a deluxe table in the end.

This tutorial focuses on making an awesome table with {gt} and {gtExtras}. You’ll learn all the little tricks on how to make the final table look super impressive!


Screenshot of table with heatmap of seed points of tournaments

Imperial March Redux – by Bill Schmid – interactive / HTML

A souped up version of the previous year’s entry, this time using {reactable}!

This submission is a new version of the table submitted for last year’s contest. This time, the {reactable} package was used to add a lot more interactivity to the table (plus, details sections for every row). Check it out!


Screenshot of table of exceptional wines and associated data

From Vines to Wines: the most exceptional wines from all over the world – by Abdoul ISSA BIDA – static / HTML

Looks great and really increases your knowledge of fine wines.

A great-looking informational table about wines. We all really enjoyed the pairing of icons with text throughout (especially in the column header area). Both R and Python were used to scrape the data for this one.

Table and SourceCommunity

Screenshot of app showing the Pokemon Mew and its information

Pokémon Red/Blue/Yellow Information Table – by Kyle Butts – interactive / Shiny

A dashboard/Pokédex/Shiny app that uses tables build from CSS grid + flex.

If you ever wanted to see how the {shiny.tailwind} could be used to generate a really nice Shiny app with no need for custom CSS, have a look at this entry. The result is a highly informational, yet beautiful, app that is a joy to behold.


Screenshot of premier league standings table

Premier League Standings 2021 – by Greta Gasparac – interactive / Shiny

A treasure trove of data for the Premier League, all presented quite beautifully.

This is a good example of a minimalistic table with exploration built in. The shiny components are useful here and make cruising around the data fun to do. The design choices were carefully considered and that makes the display of information much easier to parse.


Screenshot of histogram in a table

Histable – by Milos Vilotic – interactive / Shiny

Is it a table? Is it a histogram? It’s kinda both!

The Histable is a Shiny app with an interactive DT table. Clicking on a column does something a little unexpected but a whole lot useful: the table shows a histogram of the selected values! Because of this, users can quickly visualize a distribution across the table.


Sceenshot of crosstab with information

Crosstable, easily describe your dataset – by Dan Chaltiel – static / tutorial

Summarize and tabularize your dataset with just one function.

This is a very nice tutorial that introduces people to the {crosstable} package. The package provides a single function crosstable() that computes descriptive statistics on datasets and interfaces with {officer} to create automated reports.


In Closing

We want to thank you all for making this Table Contest so great. It is incredibly hard to judge submissions with such an overall high level of quality. We fully acknowledge that there are many other really great entries we did not highlight in this article. We encourage you to check out all of the entries at RStudio Community.

One thing we love about the R community is how open and generous you are in sharing the code and process you use to solve problems. This lets others learn from your experience and invites feedback to improve your work. We hope this contest encourages more sharing and helps to recognize the many outstanding ways people work with and display data with R.

To leave a comment for the author, please follow the link and comment on their blog: RStudio | Open source & professional software for data science teams on RStudio. offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.

Never miss an update!
Subscribe to R-bloggers to receive
e-mails with the latest R posts.
(You will not see this message again.)

Click here to close (This popup will not appear again)