gt
Easily generate information-rich, publication-quality tables from R
The gt package lets you create presentation-quality tables from data frames or tibbles in R. It provides a structured approach to table construction with distinct components: headers, column labels, table body, stubs, and footers.
gt offers a straightforward API for common table formatting needs while supporting advanced customization. It includes built-in functions for formatting currencies, dates, and numbers, and can export tables to HTML, LaTeX, and RTF formats. The package comes with 18 example datasets and integrates well with R Markdown workflows for producing publication-ready tables.
Contributors#
Resources featuring gt#
Bold indicates negative? (Luis D. Verde Arregoitia, Instituto De Ecología, A.c.) | posit::conf(2025)
Bold indicates negative?
Speaker(s): Luis D. Verde Arregoitia
Abstract:
Over one billion people worldwide use spreadsheets to manage and analyse data, often styling cells and their contents to highlight or distinguish values. This formatting is often used to encode additional data (for example, indicating groups with colors) but most data science tools are unaware of data expressed as formatting. This talk summarizes my progress addressing the gap between formatted spreadsheets and the modern data stack. First, by championing data organization best practices, then by bringing spreadsheet contents and their formatting together into R for further analyses (unheadr package), and finally how translating format to data helped me develop tools (forgts package) for converting formatted spreadsheets to gt objects.
Slides - https://liomys.mx/posit25.html posit::conf(2025) Subscribe to posit::conf updates: https://posit.co/about/subscription-management/
Building Multilingual Data Science Teams (Michael Thomas, Ketchbrook Analytics) | posit::conf(2025)
Building Multilingual Data Science Teams
Speaker(s): Michael Thomas
Abstract:
For much of my career, I have seen data science teams make the critical decision of deciding whether they are going to be an “R shop” or a “Python shop”. Doing both seemed impossible. I argue that this has changed drastically, as we have built out an effective multilingual data science team at Ketchbrook, thanks to polars/dplyr, gt/great-tables, ggplot2/plotnine, arrow, duckdb, Quarto, etc. I would like to provide a walk through of our journey to developing a multilingual data science team, lessons learned, and best practices. posit::conf(2025) Subscribe to posit::conf updates: https://posit.co/about/subscription-management/
Instant Impact: Developing {docorator} to Simplify R Adoption for Teams (Becca Krouse, GSK)
Instant Impact: Developing {docorator} to Simplify R Adoption for Teams
Speaker(s): Becca Krouse
Abstract:
Although R supports comprehensive analysis workflows, creating polished, production-ready PDFs directly from R remained a challenge for our pharma teams. With teams facing looming deadlines, our R enablement team swiftly created {docorator}—an open-source R package that transforms R-based tables and figures into production-level PDFs. By adorning results with “decorations” like headers, footers, and page numbers, {docorator} produces seamless, polished documents. Powered by Quarto, it also auto-sizes {gt} tables for user ease. Attendees will learn how {docorator} became the missing piece in GSK’s R workflows and learn how focusing on quick, simple solutions can have a lasting impact. posit::conf(2025) Subscribe to posit::conf updates: https://posit.co/about/subscription-management/
Tables in Python with Great Tables
Tables in Python with Great Tables - Rich Iannone, Michael Chow
Resources mentioned in the workshop:
- Workshop GitHub Repository: https://github.com/rich-iannone/great-tables-mini-workshop
- Great Tables https://posit-dev.github.io/great-tables/articles/intro.html
- {reactable-py} https://github.com/machow/reactable-py
- Save a gt table as a file https://gt.rstudio.com/reference/gtsave.html
- {gto} Insert gt tables into Word documents https://gsk-biostatistics.github.io/gto/
- GT.save https://posit-dev.github.io/great-tables/reference/GT.save.html
- define_units https://posit-dev.github.io/great-tables/reference/define_units.html#great_tables.define_units
- Posit Tables Contest 2024 winners: https://posit.co/blog/2024-table-contest-winners/
Editor’s note: During this workshop, several interruptions from an unwanted and disruptive intruder (commonly referred to as a “Zoom bomber”) occurred. We removed those instances from the recording, however that causes a few of the workshop sections to appear disjointed. We apologize for the inconvenience.
Workshop recorded as part of the 2024 R/Pharma Workshop Series


We want GREAT tables! | Richard Iannone & Michael Chow | Data Science Hangout
To join future data science hangouts, add it to your calendar here: https://pos.it/dsh - All are welcome! We’d love to see you!
We were recently joined by Rich Iannone and Michael Chow, software engineers at Posit, to chat about their experiences building GT and Great Tables, how they drive community engagement around their packages, and their career advice for package developers.
GT and Great Tables are R and Python packages for creating static tables in R and Python. They were created to fill a need for a good, maintained solution for generating tables with different output types from data frames. They’ve gained loads of popularity, and have an active community of users!
Resources mentioned in the video and zoom chat: Great Tables Blog → https://posit-dev.github.io/great-tables/blog/ 2024 Table Contest Winners → https://posit.co/blog/2024-table-contest-winners/ Contributing to Public Transit Data Analysis and Tooling → https://posit-dev.github.io/great-tables/blog/open-transit-tools/ Tables as Powerful Representational Tools → https://www.researchgate.net/publication/363345970_Tables_as_Powerful_Representational_Tools The MockUp - 10+ Guidelines for Better Tables in R → https://themockup.blog/posts/2021-01-13-10-guidelines-for-better-tables-in-r/ Show Me the Numbers by Stephen Few → https://analyticspress.com/smtn.php Excel spreadsheets to gt package called {forgts} → https://github.com/luisDVA/forgts What They Forgot to Teach You About R → https://rstats.wtf/ David Robinson Talk called “The unreasonable effectiveness of public work” → https://www.youtube.com/watch?v=th79W4rv67g Publication quality tables in 2024 → https://posit.co/blog/what-we-did-with-publication-quality-tables-in-2024/ Great Tables Design Philosophy → https://posit-dev.github.io/great-tables/blog/design-philosophy/ gtsummary-to-excel → https://www.pipinghotdata.com/posts/2024-07-26-gtsummary-to-excel/ happy git with R → https://happygitwithr.com/ freeCodeCamp - how to contribute to open source → https://github.com/freeCodeCamp/how-to-contribute-to-open-source/
If you didn’t join live, one great discussion you missed from the zoom chat was about how people manage their personal and work GitHub accounts, and whether to have one account for all their work or separate accounts for each employer. Let us know YOUR thoughts on this topic below!
► Subscribe to Our Channel Here: https://bit.ly/2TzgcOu
Follow Us Here: Website: https://www.posit.co Hangout: https://pos.it/dsh LinkedIn: https://www.linkedin.com/company/posit-software Bluesky: https://bsky.app/profile/posit.co
Thanks for hanging out with us!
#pythoncontent


Richard Iannone - Adequate Tables? No, We Want Great Tables
Tables are great, and we’ve been doing a lot on both the R and Python sides to make it possible to generate aesthetically pleasing tables. The gt package for R has been under continuous development for six years, and there are still so many things we can do to make it better. Great Tables, our new Python package, brings beautiful tables to Python users and provides an API that’s in tune with that ecosystem.
While we have made great strides and unlocked new table-making possibilities for our users, our ambitions are huge! So, we’d like to show you the state of things on this front and also where we intend to go with our collective table efforts.
Talk by Richard Iannone
Slides: https://github.com/rich-iannone/presentations/blob/main/2024-08-13-posit_conf_adequate_tables/gt_GT_talk_posit_conf.pdf GitHub Repo: https://github.com/rich-iannone/presentations/tree/main/2024-08-13-posit_conf_adequate_tables
Tom Mock @ Posit PBC | Data Science Hangout
We were recently joined by Tom Mock, Product Manager at Posit PBC to chat about career growth, starting out in a sales role, TidyTuesday, and being so good they can’t ignore you.
Speaker Bio: Tom Mock is a Product Manager at Posit, overseeing the Posit Workbench and RStudio team. He fell in love with R and data science through his graduate research, using R and RStudio to wrangle, analyze, model, and visualize my data. He became passionate about growing the R community, and founded #TidyTuesday to help newcomers and seasoned vets improve their Tidyverse skills.
Links mentioned: TidyTuesday: https://github.com/rfordatascience/tidytuesday Table Contest: https://posit.co/blog/announcing-the-2024-table-contest/ Posit Conference: https://posit.co/conference/ Monthly Workflow Demos: https://www.addevent.com/event/Eg16505674 gt package: https://gt.rstudio.com/ So Good They Can’t Ignore You book recommendation: https://www.goodreads.com/book/show/13525945-so-good-they-can-t-ignore-you Community Builder Quarto Site: https://pos.it/community-builder
► Subscribe to Our Channel Here: https://bit.ly/2TzgcOu
Follow Us Here: Website: https://www.posit.co LinkedIn: https://www.linkedin.com/company/posit-software
To join future data science hangouts, add to your calendar here: https://pos.it/dsh
We’d love to have you join us in the conversation live!
Thanks for hanging out with us!
Can I Have a Word? - posit::conf(2023)
Presented by Ellis Hughes
Since its release, {gt} has won over the hearts of many due to its flexible and powerful table-generating abilities. However, in cases where office products were required by downstream users, {gt}’s potential remained untapped. That all changed in 2022 when Rich Iannone and I collaborated to add Word documents as an official output type. Now, data scientists can engage stakeholders directly, wherever they are.
Join me for an upcoming talk where I’ll share my excitement about the new opportunities this update presents for the R community as well as future developments we can look forward to.
Presented at Posit Conference, between Sept 19-20 2023, Learn more at posit.co/conference.#
Talk Track: Elevating your reports. Session Code: TALK-1156

HTML and CSS for R Users - posit::conf(2023)
Presented by Albert Rapp
You can get the most out of popular R tools by combining them with easy-to-learn HTML & CSS commands.
It’s easy to think that R users do not need HTML and CSS. After all, R is a language designed for data analysis, right? But the reality is that these web standards are everywhere, even in R. In fact, many great tools like {ggtext}, {gt}, {shiny}, and Quarto unlock their full potential when you know a little bit of HTML & CSS. In this talk, I will demonstrate specific examples where R users can benefit from HTML and CSS and show you how to get started with these two languages.
Materials:
- Here’s the link to the video that I mention in the talk: https://youtu.be/QU8wSya-Y9E?si=zw59OSFPl1eJSY7M
- Part 1 of this two part series can be found at https://www.youtube.com/watch?v=jX4_Dnzhl0M
Presented at Posit Conference, between Sept 19-20 2023, Learn more at posit.co/conference.#
Talk Track: Compelling design for apps and reports. Session Code: TALK-1105
Eric Nantz, Alex Lauer, Rich Iannone - A Pivotal Year of Milestones in R Consortium Working Groups
A Pivotal Year of Milestones: R Submissions Working Group and R Tables for Regulatory Submissions updates - Eric Nantz, Alexandra Lauer, and Rich Iannone
Resources mentioned in the presentation:
- R Submissions Working Group: https://rconsortium.github.io/submissions-wg/
- R Tables eBook: https://rconsortium.github.io/rtrs-wg
Abstract: Within the life sciences industry, Shiny has enabled tremendous innovations to produce web interfaces as frontends to sophisticated analyses, dynamic visualizations, and automation of clinical reporting across drug development. While industry sponsors have widely adopted Shiny as part of their analytics and reporting toolset, a relatively unexplored frontier has been the inclusion of a Shiny application inside a clinical submission package to regulatory agencies such as the FDA. The R Consortium R Submissions Working Group has continued the positive momentum of previous submission pilots to achieve substantial progress in this domain. In this talk, we will share the development journey of the working group’s Pilot 2 successful submission of a Shiny application to the FDA, along with the progress on the use of novel technologies such as Linux containers and web assembly to bundle a Shiny application into a self-contained package, facilitating a smoother process of both transferring and executing the application. The R Consortium’s R Tables for Regulatory Submissions (RTRS) Working Group has released the first edition of (Tables in Clinical Trials with R)[ https//rconsortium.github.io/rtrs-wg/] as a free and openly accessible ebook. The book contributes to the development of a theory of displaying tabular information by identifying a small number of table archetypes that may be used to generate the most common tables employed in clinical submissions. Chapters in the book demonstrate how these tables may be rendered in different R Packages including flextable, gt, rtables (with and without tern), tables, tfrmt and tidytlg. All tables are generated from CDISC-compliant data. Comparing the code showcases the robustness of R for aggregating and displaying tabular information and illuminates the flexibility and design tradeoff of the various R packages. The talk will discuss the motivation for the book, present the idea of table archetypes, show some representative tables, and make the case for R as a superb language for analyzing clinical trial data. The RTRS working group expects Tables in Clinical Trials with R to become a primary resource of clinical programming teams.
Speaker Bios:
Eric Nantz is a director within the statistical innovation center at Eli Lilly and Company, creating analytical pipelines and capabilities of advanced statistical methodologies for clinical design used in multiple phases of development. Outside of his day job, Eric is passionate about connecting with and showcasing the brilliant R community in multiple ways. You may recognize his voice from the R-Podcast that he launched in 2012. Eric is also the creator of the Shiny Developer Series where he interviews authors of Shiny-related packages and practitioners developing applications, as well as sharing his own R and Shiny adventures via livestreams on his Twitch channel. In addition, Eric is a curator for the RWeekly project and co-host of the RWeekly Highlights podcast which accompanies every issue.
Alexandra Lauer is a Senior Principal Statistical Analyst at Merck KGaA, Darmstadt, Germany, with a background in mathematics. She specializes in bridging psychometrics and biostatistics, with a primary focus on Health-Related Quality of Life evaluations. Alex is an R enthusiast, co-leading the Merck-internal R User Group.
Rich Iannone: My background is in programming, data analysis, and data visualization. Much of my current software engineering work on R packages is intended to make working with data easier. I truly believe that with the right approach, tools like these can be both powerful and easy to use.
Presented at the 2023 R/Pharma Conference (October 26, 2023)

Richard Iannone - Improvements made to {gt} in 2023
Improvements made to {gt} in 2023 - Richard Iannone
Presentation slides available at https://github.com/rich-iannone/presentations/tree/main/2023-10-23-rpharma_gt_2023
Bio: My background is in programming, data analysis, and data visualization. Much of my current software engineering work on R packages is intended to make working with data easier. I truly believe that with the right approach, tools like these can be both powerful and easy to use.
Presented at the 2023 R/Pharma Conference (October 24, 2023)
How to schedule a Quarto document on Posit Connect
Episode 3: Scheduling a Quarto Doc (with custom branding) on Posit Connect Led by: Ryan Johnson, Data Science Advisor
Live Q&A recording: https://youtu.be/JUgChPCa3vs
Follow-up links:
- Posit Team: https://posit.co/products/enterprise/team/
- Talk to us directly: https://posit.co/schedule-a-call/?booking_calendar__c=RST_YT_Demo
- Follow-along blog post: https://posit.co/blog/scheduling-a-quarto-doc-on-posit-connect/
- Source code for example: https://github.com/ryjohnson09/quarto-job-scheduling
- Posit Team demo resources: pos.it/demo-resources
Timestamps: 1:45 - What is Posit Team? 3:31 - The data we are analyzing: R package download data from within Posit Package Manager (via experimental API) 4:44 - What is Quarto? (we are creating two Quarto docs today) 8:06 - Create a new session in Posit Workbench 8:56 - Create a new project within the RStudio IDE 10:13 - Create the first Quarto document (ETL: extra, transform, load workflow) 13:55 - Publish the first Quarto doc to Posit Connect 16:50 - Take the package download results and pin it to Posit Connect (overview of pins) 18:30 - Schedule the first Quarto doc to run every day at 7am on Posit Connect 20:49 - Create the second Quarto document (report for stakeholders) 23:41 - View the first “boring report” 24:54 - Using a custom Posit format for the report 27:39 - First look of the themed report without modifications 29:00 - Adding Posit themed colors to the gt table 31:35 - Apply code chunk options to hide code from output 32:44 - Publish the second Quarto document to Posit Connect 34:28 - View finished custom branded Quarto document 34:44 - Define specific users who have access to the Quarto doc on Posit Connect 35:10 - Schedule the second Quarto doc to read in the pinned data from the first Quarto doc 36:30 - Example emailed report from the scheduled Quarto report
On the last Wednesday of every month, we host a Posit Team demo and Q&A session that is open to all. You can use this to add the event to your own calendar.
Who are these monthly demos for? Everyone is welcome to join us - regardless of industry, background, or experience!
We will discuss topics that will speak to:
- Data scientists and administrators new to Posit Team or are looking to grow their understanding of our toolchain,
- Teams searching for a new analytic platform built to support open-source data science,
- And, those that are just curious about Posit Team!
What you can expect from the monthly Posit Team demo:
During the session, we will walk through an end-to-end data science workflow and demo the core functionality of Posit Team while highlighting some of our latest features!
While each session’s content will vary slightly, here are a few core topics we will address each month:
- Open Source Analytics: The future of data science is open source. We’ll discuss methods for leveraging open-source tools and packages in a secure and scalable way!
- Deployment: How to share the amazing data science assets your Team has built, including web applications, machine learning models, APIs, and more!
- Data Access: Data comes in various forms and is stored in various ways. We’ll discuss best practices for accessing, reading, and writing data!
- Job Scheduling: Do you have recurring data science jobs? We’ll show you how to automate these processes using Posit Connect.
What is Posit Team?
Posit Team is a bundle of our popular professional software (Posit Workbench, Posit Connect, and Posit Package Manager) for developing data science projects, publishing data products, and managing packages.
Registration is not required. The event will be streamed through YouTube Premiere
Rich Iannone | What’s new and exciting in gt 0.8.0 | Posit
With the gt package, anyone can make wonderful-looking tables using the R programming language. Rich Iannone, maintainer of gt, shows what’s new and improved in gt 0.8.0!
00:00 Introduction 00:42 Find/Replace values with sub_values() 02:46 Find values and style them with tab_style_body() 05:00 Place a cell in your Quarto/RMarkdown doc with extract_cells() 07:13 Make numbers more readable with cols_align_decimal() 08:54 See column id info with tab_info() 11:03 Date and time formatting improvements
For more details: • Demo script in this video: https://pos.it/gt8 • Read the blog post on gt 0.8.0: https://posit.co/blog/new-features-upgrades-in-gt-0-8-0/ • Learn more at https://gt.rstudio.com/ • See a full list of new features and improvements at https://gt.rstudio.com/news/index.html#gt-080

Open Source Chat - {gt} with Rich Iannone
Join Rich Iannone, maintainer of the {gt} package, as he takes questions from the community about the latest in {gt} v0.7.0, and building great looking data display tables with R.
Key Resources: ⬡ Get started with {gt} - https://gt.rstudio.com
Reach out: 38:48 - How do I ask Rich about {gt}, feature requests, bug reports, how to solve a problem via {gt}? Rich and the {gt} team would love to hear from you. ⬡ Feature requests & bug reports with GitHub Issues, https://github.com/rstudio/gt/issues ⬡ GitHub Discussions, https://github.com/rstudio/gt/discussions ⬡ Ask the community a question, https://community.rstudio.com/tag/gt ⬡ Follow {gt} on Twitter, feel free to reach out and ask questions, https://twitter.com/gt_package
Timestamps
Rich Iannone Introduction.
03:52 - Why {gt}? - What does {gt} bring to the table? Why so much effort into static, data display tables?
05:50 - Why open source? Why is {gt} open source and why have you dedicated your career to develop open source software?
08:30 - {gt} v0.7.0, Tell us about those new vector formatting functions in {gt}. Why did you include them? Could you show us some examples?
{gt}’s vector formatting functions help you customize the styling, look and feel of your values. Converting the output values R gives you, and making them look exactly the way you want them to can be tricky. A lot of work was put into {gt} to give nice value formatting options. You can now access all these outside of a gt table; e.g. in text, in a plot, etc.
22:35 - Could you provide an example or two with the new styling function called opt_stylize()? What kinds of tables can you make with that? Can you extend that with your own tweaks?
28:15 - Can you make your own themes and share them? “How do I create my own custom theme for my table? A theme I can share with the rest of my organization?”
31:58 - What is the distinction between tab_options and the opt_* functions? Why would a function be in opt_* and not tab_options?
34:00 - sub_values() function, to find and replace certain values in your table.
36:50 - What is the current support for latex in {gt} at the moment? “Personally, I much prefer HTML, but for scientific publications, we are asked to provide a LaTeX file.”
42:50 - “In my work, I often produce A4 output in PDF, mainly with ggplot2 content. It would be nice to be able to combine ggplot + gt tables in a similar way {patchwork} works. Having the plot and the table next to it is very useful sometimes.”
44:30 - Interactive Tables with {gt}?
47:45 - “Any plans to make applying of same style to several columns easier? Unless I’m mistaken, the locations argument of tab_style requires one to specify an individual column. See here: https://gt.rstudio.com/reference/tab_style.html#examples."
Yes, supply a vector of columns or use tidyselect functions.
49:15 - “Excel output with {gt}? Would be a huge improvement. I often have to produce tabular output that can be easily reused. Usually it means Excel tables. So far I have mainly done this with Python and openpyxl or PyWin32 (through COM). A simple solution in R would be great.”
50:20 - Support for additional output formats with {gt}? Excel, PowerPoint, etc.?
50:25 - {pointplank}, a package to methodically validate your data whether in the form of data frames or as database tables., https://rich-iannone.github.io/pointblank/
. Check out the workshop materials at https://github.com/rich-iannone/pointblank-workshop
55:50 - “Are there ways to have grouped rows? I mean when repeated rows have same characters can we merge them to one?”
58:00 - “Is there an ability to add ‘battleship coordinates’ (e.g. column letters & row numbers) to a gt object? This is a standard for table across my org and I’ve been trying to figure out how to implement it.”
59:59 “Do you have suggestions or examples of building out & applying corporate formatting to gt tables (e.g. adding a company logo, company colors, etc.)?”
01:04:30 - “With PDF/LaTeX output for wide tables, it does not shrink the table.”

What’s New in {gt} 0.7.0?
gt 0.7.0 was just released. Rich Iannone, maintainer of gt, dives into the 7 new features added.
For more details, ⬢ Read the blog post on gt 0.7 https://www.rstudio.com/blog/all-new-things-in-gt-0-7-0/ . ⬢ Learn more about gt at https://gt.rstudio.com/ . ⬢ Follow the gt twitter account, https://twitter.com/gt_package .
00:07 The new Word table output format, .docx output. 00:34 A whole new family of vector formatting functions (vec_fmt_*()) has been added. 01:03 Table presets/themes styling with the new opt_stylize() function. 01:50 The new tab_stub_indent() for superfine control over row label indentation (in the stub) 02:26 The new fmt_duration() function for formatting of time duration values. 03:32 An upgraded gtsave() that uses {webshot2}, .png output looks better. 04:14 Accessibility enhancements for HTML table outputs

Welcome to Quarto Workshop! | Led by Tom Mock, RStudio
Welcome to Quarto 2-hour Workshop | Led by Tom Mock, RStudio
Content website: https://jthomasmock.github.io/quarto-2hr-webinar/ FULL Workshop Materials (this was from a 2-day workshop): rstd.io/get-started-quarto Other upcoming live events: rstd.io/community-events
Double-check: Are you on the latest version of RStudio i.e. v2022.07.1 or later?
Packages used: tidyverse, gt, gtExtras, reactable, ggiraph, here, quarto, rmarkdown, gtsummary, palmerpenguins, fs, skimr
️ Pre-built RStudio Cloud with workshop materials already installed: https://rstudio.cloud/content/4332583
For follow-up questions, please use: community.rstudio.com/tag/quarto
Timestamps: 7:16 - What is Quarto? 8:28 - How does R Markdown work? 9:40: Quarto, more than just knitr 13:56 - Quarto can support htmlwidgets in R and Jupyter widgets for Python/Julia 14:18 - Native support for Observable Javascript 19:28 - Quarto in your own workspace (Jupyter Lab, VSCode, RStudio) 20:26 - RStudio Visual Editor mode 23:30 - VS Code YAML 26:02 - Quarto for collaboration 26:55 - How do you publish Quarto? (Quarto Pub, GitHub Pages, RStudio Connect, Netlify) 28:44 - What about Data Science at Work? 29:59 - Formats baked into Quarto (basic formats, beamer, ppt, html slides, advanced layout, cross references, websites, blogs, books, interactivity) 32:13 - What to do with my existing .Rmd or .ipynb? 33:16 - Why Quarto, instead of R Markdown? 40:50 - Text Formatting 41:30 - Headings 41:51 - Code (also merging R and Python in one document) 43:29 - What about the CLI? 44:55 - Navigating in the terminal 57:56 - PART 2: Authoring Quarto 1:00:22 - Output options 1:04:46 - Quarto workflow 1:12:06 - Quarto YAML intelligence 1:13:20 - Divs and Spans 1:22:13 - Figure layout 1:34:40 - Code chunk options 1:41:00 - Quarto and R Markdown (converting R Markdown to Quarto)
This 2-hour virtual session is designed for those who have no or little prior experience with R Markdown and who want to learn Quarto.
Want to get started with Quarto?
- Install RStudio v2022.07.1 from https://www.rstudio.com/products/rstudio/download/#download - this will come with a working version of Quarto!
- Webinar materials/slides: https://jthomasmock.github.io/quarto-2hr-webinar/
- Workshop materials on RStudio Cloud: https://rstudio.cloud/content/4332583
What is Quarto?
Quarto is the next generation of R Markdown for publishing, including dynamic and static documents and multi-lingual programming language support. With Quarto you can create documents, books, presentations, blogs or other online resources.
Should I take this?
As with all the community meetups, everyone is welcome. This will be especially interesting to you if you have experience programming in R and want to learn how to take advantage of Quarto for literate data science programming in academia, science, and industry.
This workshop will be appropriate for attendees who answer yes to these questions:
Have you programmed in R and want to better encapsulate your code, documentation, and outputs in a cohesive “data product”? Do you want to learn about the next generation of R Markdown for data science? Do you want to have a better interactive experience when writing technical or scientific documents with literate programming?
For more info on Quarto: quarto.org
Rich Iannone || New features in {gt} 0.6.0! || RStudio
00:00 Introduction 00:18 sub_missing() 03:51 Markdown formatting in sub_missing() 04:51 sub_zero() 07:34 sub_small_vals() 13:08 sub_large_vals() 16:25 final thoughts
A new version of the R package {gt} has been released! We are now at version 0.6.0 and there are now even more features that’ll make your display/summary tables look and work much, much better. Let’s run through some of the bigger changes and see the benefits they can bring!
New functions for substituting cell data
We now have four new functions that allow you to make precise substitutions of cell values with perhaps something more meaningful. They all begin with sub_ and that’s short for substitution!
sub_missing() (formerly known as fmt_missing()) Here’s something that’s both old and new. The sub_missing() function (for replacing NAs with… something) is new, but it’s essentially replacing a function that is old (fmt_missing()).
The missing_text replacement of “—” is actually an em dash (the longest of the dash family). This can be downgraded to an en dash with “–” or we can go further with “-”, giving us a hyphen replacement. Or, you can use another piece of text.
If you’re using and loving fmt_missing(), it’s okay! You’ll probably receive a warning about it when you upgrade to {gt} 0.6.0 though. Best to just substitute fmt_missing() with sub_missing() anyway!
sub_zero() The sub_zero() function allows for substituting zero values in the table body.
sub_small_vals() Next up is the sub_small_vals() function. Ever have really, really small values and really just want to say they are small?
With sub_small_vals() we can reformat smaller numbers using the default threshold of 0.01.
Small and negative values can also be handled but they are handled specially by the sign parameter. Setting that to “-” will format only the small, negative values.
You don’t have to settle with the default threshold value or the default replacement pattern (in small_pattern). This can be changed and the “x” in small_pattern (which uses the threshold value) can even be omitted.
sub_large_vals() Okay, there’s one more substitution function to cover, and this one’s for all the large values in your table: sub_large_vals(). With this you can substitute what you might consider as too large values in the table body.
Large negative values can also be handled but they are handled specially by the sign parameter. Setting that to “-” will format only the large values that are negative. You don’t have to settle with the default threshold value or the default replacement pattern (in large_pattern). This can be changed and the “x” in large_pattern (which uses the threshold value) can even be omitted.
Final thoughts We are always trying to improve the gt package with a mix of big features (some examples: improving rendering, adding new families of functions) and numerous tiny features (like improving existing functions, clarifying documentation, etc.). It’s hoped that the things delivered in gt 0.6.0 lead to improvements in how you create and present summary tables in R. If there are features you really want, always feel free to:
File an issue: https://github.com/rstudio/gt/issues ) Talk about your ideas on the Discussions page: https://github.com/rstudio/gt/discussions
Learn more about the gt package here: https://gt.rstudio.com/
Got questions? The RStudio Community site is a great place to get assistance: https://community.rstudio.com/
Content: Rich Iannone (@riannone) Motion Design & editing: Jesse Mostipak Music: Nu Fornacis by Blue Dot Sessions https://app.sessions.blue/browse/track/98983

{gt} Table Battles || Eurovision || RStudio
00:00 Introduction 00:07 Jesse’s gt table, with a focus on flag emoji and interactivity via a Shiny app 09:50 Rich’s gt table, with a focus on CSS and embedded animations
Code: https://github.com/kierisi/rstudio_videos/tree/main/gt/table-battles
Learn more about the gt package here: https://gt.rstudio.com/
Got questions? The RStudio Community site is a great place to get assistance: https://community.rstudio.com/
Content: Rich Iannone (@riannone) & Jesse Mostipak (@kierisi) Motion Design & editing: Jesse Mostipak Music: Gemeni City by Blue Dot Sessions https://app.sessions.blue/browse/track/113567

{gt} Table Battles || Crosswords || RStudio
00:00 Introduction 00:34 Rich’s gt table, with a focus on creating audio within a table 07:28 Jesse’s gt table, with a focus on sentiment analysis
Learn more about the gt package here: https://gt.rstudio.com/
Got questions? The RStudio Community site is a great place to get assistance: https://community.rstudio.com/
Content: Rich Iannone (@riannone) & Jesse Mostipak (@kierisi) Motion Design & editing: Jesse Mostipak Music: Nu Fornacis by Blue Dot Sessions https://app.sessions.blue/browse/track/98983

{gt} Table Battles || Digital Publications || RStudio
00:00 Introduction 00:32 Jesse’s gt table, with a focus on changing background cell color 07:11 Rich’s gt table, which uses three different tables to create a fixed-size scrollable gt table
You can find the code for each table here: https://github.com/kierisi/rstudio_videos/tree/main/gt/table-battles/01_round-01_digital-publications
Learn more about the gt package here: https://gt.rstudio.com/
Got questions? The RStudio Community site is a great place to get assistance: https://community.rstudio.com/
Content: Rich Iannone (@riannone) & Jesse Mostipak (@kierisi) Motion Design & editing: Jesse Mostipak Music: Nu Fornacis by Blue Dot Sessions https://app.sessions.blue/browse/track/98983

Rich Iannone || {gt} Intendo Game Data Project Walkthrough || RStudio
00:00 Introduction 00:11 Setting up our environment 01:21 Importing data 01:56 Data preparation using the tidyverse 14:12 Basic gt table 16:25 Specifying row order with row_group_order() 17:20 Formatting currency with fmt_currency() 18:10 Formatting missing values with fmt_missing() 18:55 Creating row groups with tab_options() 19:50 Relabel column names with cols_label() 20:41 Creating tab spanners with tab_spanner() 23:00 Creating a table title and subtitle with tab_header() 24:40 Aligning table title and subtitle with opt_align_table_header() 25:16 Creating a stubhead label with tab_stubhead() 26:00 Format all table cell text using tab_style() 27:25 Automatically format data color based on value using data_color() 30:45 Creating Markdown-friendly source notes using tab_source_note() 32:45 Creating Markdown-friendly footnotes using tab_footnote() 39:28 Adjust table column width using cols_width() 40:55 Adjust cell padding using opt_horizontal_padding() and opt_vertical_padding() 42:22 Change row group headers using tab_style() 43:40 Convert all table text to small caps using opt_all_caps() 43:58 Change all table text font using opt_table_font() 44:28 Changing table, table heading, footnotes, and source notes background color using tab_options() 46:41 Add a table “cap” at the top and bottom using table.border.top.width() and table.border.bottom.width() 47:23 Use multiline formatting with footnotes using footnotes.multiline() 47:34 Change line style using table_body.hlines.style() 47:55 Change table title and subtitle font sizes using heading.title.font.size() and heading.subtitle.font.size() 48:11 Checking out our final table!
Code to recreate the table from the video: https://github.com/kierisi/rstudio_videos/blob/main/gt/rich-intendo-project-walkthrough/intendo-30032022.R
Learn more about the gt package here: https://gt.rstudio.com/
Got questions? The RStudio Community site is a great place to get assistance: https://community.rstudio.com/
Content: Rich Iannone (@riannone) Motion design and editing: Jesse Mostipak (@kierisi) Music: Nu Fornacis by Blue Dot Sessions https://app.sessions.blue/browse/track/98983

George Mount | R for Excel Users - First Steps | RStudio Meetup
Abstract: Excel’s built-in programming language has served as an entry point to coding for many. If you’re a data analyst steeped in Excel, chances are you could also benefit from learning R for projects of increased scope and complexity.
This presentation serves as a hands-on introduction to R for Excel users:
How R differs from Excel as an open source software tool How to translate common Excel concepts such as cells, ranges, and tables to R equivalents Example use cases that you can take and apply to your own work How to enhance Excel and Power BI with R By the end of this presentation, you will have a clear path forward for building repeatable processes, compelling visualizations, and robust data analyses in R.
Speaker Bio: George Mount is the founder of Stringfest Analytics, a consulting firm specializing in analytics education and upskilling. He has worked with leading bootcamps, learning platforms and practice organizations to help individuals excel at analytics. George regularly blogs and speaks on data analysis, data education and workforce development. He is the author of Advancing into Analytics: From Excel to Python and R (O’Reilly).
Link to George’s white paper “Five things Excel users should know about R”https://stringfestanalytics.com/five-things-r-excel/
Working group sign-up for those interested!
Within many organizations Microsoft Excel is a preferred tool for working with data for non data analytics users. In order to build a data driven organization, source data and analytical models must be accessible to all data users (technical and non-technical) within their preferred tool. Let’s rally the R community to welcome Excel users into our data driven culture by building an Excel add-on to access data and models available within RStudio. If you’re interested in continuing this conversation and joining a working group, let us know! rstd.io/excel-r-community
Links shared at the meetup! George’s GitHub/ Presentation Resources: https://github.com/stringfestdata/rstudio-mar-2022
Packages? Where to find them & recommendations:
CRAN Task Views: https://cran.r-project.org/web/views/
Mark shared: for folks who primarily use excel to present formatted tables, the gt package is a great way to start doing this programmatically in R: https://gt.rstudio.com/
Ivan shared: In addition to regular Google, I’d recommend https://rseek.org/
, given that the character ‘R’ is sometimes not search friendly :)
Jeff shared: Fpp2 is great for forecasting and time series analysis - https://otexts.com/fpp2/
Floris shared: https://otexts.com/fpp3/
Ivan shared: If you’re into tidyverse, there’s an equivalent for time-series: https://tidyverts.org/
George shared: https://dplyr.tidyverse.org/
Ryan shared: This can be a helpful package for dynamically editing tables, like in excel https://github.com/DillonHammill/DataEditR
Ryan shared: This is a great package for making and learning ggplot visualizations: https://cran.r-project.org/web/packages/esquisse/vignettes/get-started.html
Other resources: Monaly shared: There is a R help group: r-help@r-project.org George shared: Helpful book/site on statistics: https://moderndive.com/ Ryan shared:Harvard has a good online source (free options) that has a number of classes, the following for stats: https://www.edx.org/professional-certificate/harvardx-data-science George shared: R for Data Science free book: https://r4ds.had.co.nz/ Fernando shared: big book of R https://www.bigbookofr.com/index.html Floris shared: Advanced R Book: https://adv-r.hadley.nz/ Pedro shared: The R for Data Science Slack channel is a great learning resource! r4ds.io/join (we just made a channel there called #chat-excel_to_r Ivan shared: For teams who are deeply entrenched in Excel (like my old team), this tool may be useful - https://bert-toolkit.com/ . It allows running R code in .xls, so you can learn R while doing .xls :)
Re: Glossary of terms: Ivan shared: inner_join() is like VLOOKUP in .xls. Dan shared: Here’s one cheat sheet (glossary of Excel to R) that I just found; https://paulvanderlaken.com/2018/07/31/transitioning-from-excel-to-r-dictionary-of-common-functions/
Extra Meetup Links Feedback: rstd.io/meetup-feedback Talk submission: rstd.io/meetup-speaker-form If you’d like to find out about upcoming events you can also add this calendar: rstd.io/community-events RStudio conference/submit a talk: https://www.rstudio.com/conference/ Recordings of all meetups: https://www.youtube.com/playlist?list=PL9HYL-VRX0oRKK9ByULWulAOO5jN70eXv
Alok Pattani - Google | Sports Analytics Meetup | RStudio
Abstract: The increasing volume, variety, and velocity of sports data provides both great opportunities and challenges for data scientists working in sports. Using R with Google Cloud data science tools like BigQuery can help practitioners scale their analysis and impact in this “new era” of sports analytics. This presentation will include a demonstration of using R and Google Cloud together with an NCAA basketball data example, as well as a discussion of the application of such metrics and tools in the sports media and technology industries.
Speaker Bio: Alok is a Data Science Developer Advocate at Google, where he shows how to use Google Cloud tools for data science, in sports and otherwise. He is a sports analytics expert and a long-time user of R and RStudio. Before joining Google, Alok spent 8 years at ESPN, where he was a founding member of their Sports Analytics team and contributed significantly to the use of analytical content across all media platforms. Alok is originally from Cheshire, CT and earned a BA/MA in statistics from Boston University.
Alok’s Slides: https://lnkd.in/gxQUf8nV
Packages shared: sportsdataverse: https://lnkd.in/g8UKAJgc wehoop: https://lnkd.in/grBgmc33 hoopr: https://lnkd.in/gRHNWV4j glmnet: https://lnkd.in/g4cuxYzs googleAuthRverse: https://lnkd.in/gf5fRgcC All of Mark Edmondson’s Google packages: https://lnkd.in/gmTpvMsY
Other resources shared: Sports data: https://www.spotrac.com/ Analyzing NCAA Basketball with GCP: https://lnkd.in/gT-4vWwa 2020 Google Cloud March Madness Insights: https://lnkd.in/gEWd9xtu Alok’s presentation on Innovating the MLB Fan Experience through Data: https://lnkd.in/g9XmFKsy NFL Player Tracking Data Meetup recording: Analyzing Soccer Data with BigQuery: https://lnkd.in/gbbCGKaK Sports channel on the R for Data Science Online Learning Community Slack: r4ds.io/join # chat-sports_analytics
Rich Iannone || Making Beautiful Tables with {gt} || RStudio
00:00 Introduction 00:37 Adding a title with tab_header() (using Markdown!) 01:47 Adding a subtitle 02:48 Aligning table headers with opt_align_table_header() 03:48 Using {dplyr} with {gt} 06:03 Create a table stub with rowname_col() 07:35 Customizing column labels with col_label() 09:45 Formatting table numbers with fmt_number() 12:10 Adjusting column width with cols_width() 15:39 Adding source notes with tab_source_note() 16:55 Adding footnotes with tab_footnote() 18:55 Customizing footnote marks with opt_footnote_marks() 19:10 Demo of how easy managing multiple footnotes is with {gt} 23:41 Customizing cell styles with tab_style() 27:07 Adding label text to the stubhead with tab_stubhead() 28:15 Changing table font with opt_table_font() 29:25 Automatically scaling cell color based on value using data_color()
With the gt package, anyone can make wonderful-looking tables using the R programming language. The gt philosophy: we can construct a wide variety of useful tables with a cohesive set of table parts. These include the table header, the stub, the column labels and spanner column labels, the table body, and the table footer.
It all begins with table data (be it a tibble or a data frame). You then decide how to compose your gt table with the elements and formatting you need for the task at hand. Finally, the table is rendered by printing it at the console, including it in an R Markdown document, or exporting to a file using gtsave(). Currently, gt supports the HTML, LaTeX, and RTF output formats.
The gt package is designed to be both straightforward yet powerful. The emphasis is on simple functions for the everyday display table needs.
You can read more about gt here: https://gt.rstudio.com/articles/intro-creating-gt-tables.html And you can learn more about Shiny here: https://shiny.rstudio.com/
Got questions? The RStudio Community site is a great place to get assistance: https://community.rstudio.com/
Content: Rich Iannone (@riannone) Design & editing: Jesse Mostipak (@kierisi)

Webinar Summary | Avoid Dashboard Fatigue | RStudio (2020)
0:00 Introduction 0:07 The Problem 1:05 The Solution 3:20 Real Life Success Stories 5:27 Demo (with code)
Don’t have an hour to watch a webinar? We’ve made a summary video that covers the main points of our “Avoid Dashboard Fatigue” webinar from Sean Lopp and Rich Iannone.
The full webinar covered: Data science teams face a challenging task. Not only do they have to gain insight from data, they also have to persuade others to make decisions based on those insights. To close this gap, teams rely on tools like dashboards, apps, and APIs. But unfortunately data organizations can suffer from their own success - how many of those dashboards are viewed once and forgotten? Is a dashboard of dashboards really the right solution? And what about that pesky, precisely formatted Excel spreadsheet finance still wants every week?
In this webinar, we’ll show you an easy way teams can solve these problems using proactive email notifications through the blastula and gt packages, and how RStudio pro products can be used to scale out those solutions for enterprise applications. Dynamic emails are a powerful way to meet decision makers where they live - their inbox - while displaying exactly the results needed to influence decision-making. Best of all, these notifications are crafted with code, ensuring your work is still reproducible, durable, and credible.
We’ll demonstrate how this approach provides solutions for data quality monitoring, detecting and alerting on anomalies, and can even automate routine (but precisely formatted) KPI reporting.
Webinar materials: https://rstudio.com/resources/webinars/avoid-dashboard-fatigue/
About Sean: Sean has a degree in mathematics and statistics and worked as an analyst at the National Renewable Energy Lab before making the switch to customer success at RStudio. In his spare time he skis and mountain bikes and is a proud Colorado native.
About Rich: My background is in programming, data analysis, and data visualization. Much of my current work involves a combination of data acquisition, statistical programming, tools development, and visualizing the results. I love creating software that helps people accomplish things. I regularly update several R package projects (all available on GitHub). One such package is called DiagrammeR and it’s great for creating network graphs and performing analyses on the graphs. One of the big draws for open-source development is the collaboration that comes with the process. I encourage anyone interested to ask questions, make recommendations, or even help out if so inclined!

Sean Lopp & Rich Iannone | Avoid Dashboard Fatigue | RStudio (2020)
Data science teams face a challenging task. Not only do they have to gain insight from data, they also have to persuade others to make decisions based on those insights. To close this gap, teams rely on tools like dashboards, apps, and APIs. But unfortunately data organizations can suffer from their own success - how many of those dashboards are viewed once and forgotten? Is a dashboard of dashboards really the right solution? And what about that pesky, precisely formatted Excel spreadsheet finance still wants every week?
In this webinar, we’ll show you an easy way teams can solve these problems using proactive email notifications through the blastula and gt packages, and how RStudio pro products can be used to scale out those solutions for enterprise applications. Dynamic emails are a powerful way to meet decision makers where they live - their inbox - while displaying exactly the results needed to influence decision-making. Best of all, these notifications are crafted with code, ensuring your work is still reproducible, durable, and credible.
We’ll demonstrate how this approach provides solutions for data quality monitoring, detecting and alerting on anomalies, and can even automate routine (but precisely formatted) KPI reporting.
Webinar materials: https://rstudio.com/resources/webinars/avoid-dashboard-fatigue/
About Sean: Sean has a degree in mathematics and statistics and worked as an analyst at the National Renewable Energy Lab before making the switch to customer success at RStudio. In his spare time he skis and mountain bikes and is a proud Colorado native.
About Rich: My background is in programming, data analysis, and data visualization. Much of my current work involves a combination of data acquisition, statistical programming, tools development, and visualizing the results. I love creating software that helps people accomplish things. I regularly update several R package projects (all available on GitHub). One such package is called DiagrammeR and it’s great for creating network graphs and performing analyses on the graphs. One of the big draws for open-source development is the collaboration that comes with the process. I encourage anyone interested to ask questions, make recommendations, or even help out if so inclined!

Rich Iannone | Introducing the gt package | RStudio (2019)
With the gt package, anyone can make great-looking display tables. Though the package is still early in development, you can do some really great things with it right now! I’ll walk through a few examples that touch upon the more common table-making use cases. These will include features like adding table parts, integrating footnotes, styling/transforming table cells, using tables in R Markdown documents, and even including gt tables in email messages.
VIEW MATERIALS https://github.com/rich-iannone/presentations/tree/master/2019_01-19-rstudio_conf_gt
About the Author Rich Iannone My background is in programming, data analysis, and data visualization. Much of my current work involves a combination of data acquisition, statistical programming, tools development, and visualizing the results. I love creating software that helps people accomplish things. I regularly update several R package projects (all available on GitHub). One such package is called DiagrammeR and it’s great for creating network graphs and performing analyses on the graphs. One of the big draws for open-source development is the collaboration that comes with the process. I encourage anyone interested to ask questions, make recommendations, or even help out if so inclined!

