<?xml version="1.0" encoding="UTF-8"?>
<rss  xmlns:atom="http://www.w3.org/2005/Atom" 
      xmlns:media="http://search.yahoo.com/mrss/" 
      xmlns:content="http://purl.org/rss/1.0/modules/content/" 
      xmlns:dc="http://purl.org/dc/elements/1.1/" 
      version="2.0">
<channel>
<title>%&gt;% dreams</title>
<link>https://ivelasq.rbind.io/talk.html</link>
<atom:link href="https://ivelasq.rbind.io/talk.xml" rel="self" type="application/rss+xml"/>
<description>Isabella Velásquez Personal Website</description>
<generator>quarto-1.9.37</generator>
<lastBuildDate>Wed, 18 Mar 2026 00:00:00 GMT</lastBuildDate>
<item>
  <title>Working smarter with {dplyr} 1.2.0</title>
  <dc:creator>Isabella Velásquez</dc:creator>
  <link>https://ivelasq.rbind.io/talk/dplyr-1-2-0/</link>
  <description><![CDATA[ 




<a href="https://www.meetup.com/rladies-rome/events/313630747/" class="btn btn-secondary">
  <i class="bi bi-calendar-event"></i>&nbsp;&nbsp;Event
</a>

<a href="https://ivelasq-dplyr-1-2-0.share.connect.posit.cloud" class="btn btn-secondary" target="_blank" rel="noopener noreferrer">
  <i class="bi bi-tv"></i>&nbsp;&nbsp;Slides
</a>

<a href="https://github.com/ivelasq/2026-03-18_dplyr-1-2-0" class="btn btn-secondary" target="_blank" rel="noopener noreferrer">
  <i class="bi bi-github"></i>&nbsp;&nbsp;Repo
</a>

<a href="https://www.youtube.com/watch?v=xCbFl_Ez6VM" class="btn btn-secondary" target="_blank" rel="noopener noreferrer">
  <i class="bi bi-youtube"></i>&nbsp;&nbsp;Recording
</a>  
<p><br></p>
<section id="details" class="level2">
<h2 class="anchored" data-anchor-id="details">Details</h2>
<ul style="list-style-type: none; padding-left: 0;">
<li>
👥 <a href="https://www.meetup.com/rladies-rome/events/313630747/?eventOrigin=group_events_list">R-Ladies Rome</a>
</li>
<li>
📆 18 March 2026 // 01:00 PM ET
</li>
<li>
💻️ Virtual
</li>
</ul>
</section>
<section id="description" class="level2">
<h2 class="anchored" data-anchor-id="description">Description</h2>
<p>The tidyverse keeps evolving, and {dplyr} 1.2.0 brings a set of new tools that make data manipulation even more expressive and flexible. Whether you regularly work with R and the tidyverse, or you’re looking to sharpen your data wrangling skills, this session will help you better understand the design philosophy behind the latest {dplyr} release and how to apply it effectively.</p>
</section>
<section id="slides" class="level2">
<h2 class="anchored" data-anchor-id="slides">Slides</h2>
<iframe src="https://ivelasq-dplyr-1-2-0.share.connect.posit.cloud" height="415" width="800">
</iframe>
</section>
<section id="recording" class="level2">
<h2 class="anchored" data-anchor-id="recording">Recording</h2>
<iframe width="800" height="415" src="https://www.youtube.com/embed/xCbFl_Ez6VM?si=Yq178oYeqDzi4fI0" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen="">
</iframe>
</section>
<section id="summary" class="level2">
<h2 class="anchored" data-anchor-id="summary">Summary</h2>
<p><em>This summary was generated by Claude Sonnet 4.6 and reviewed by me.</em></p>
<section id="todays-data" class="level3">
<h3 class="anchored" data-anchor-id="todays-data">Today’s data</h3>
<p>We’ll use salmonid mortality data from <a href="https://github.com/rfordatascience/tidytuesday/blob/main/data/2026/2026-03-17/readme.md">TidyTuesday</a>, published by the Norwegian Veterinary Institute. The dataset covers monthly mortality data from 2020.</p>
<blockquote class="blockquote">
<p><em>“The data is going to be shared saved in an object called <code>monthly_losses_data</code>. And if we read in that CSV and take a look at the first few rows, you’ll notice that there are nine columns that cover things like species, date, geo group, region, losses, and a variety of variables that describe how those losses happened. And so just a really nice data set to practice some of the functions that we’re going to be taking a look at.”</em></p>
</blockquote>
<div class="cell">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb1" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb1-1">monthly_losses_data <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span></span>
<span id="cb1-2">  readr<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">::</span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">read_csv</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'https://raw.githubusercontent.com/rfordatascience/tidytuesday/main/data/2026/2026-03-17/monthly_losses_data.csv'</span>)</span></code></pre></div></div>
<div class="cell-output cell-output-stderr">
<pre><code>Rows: 2808 Columns: 9
── Column specification ────────────────────────────────────────────────────────
Delimiter: ","
chr  (3): species, geo_group, region
dbl  (5): losses, dead, discarded, escaped, other
date (1): date

ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.</code></pre>
</div>
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb3" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb3-1"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">head</span>(monthly_losses_data)</span></code></pre></div></div>
<div class="cell-output cell-output-stdout">
<pre><code># A tibble: 6 × 9
  species date       geo_group region losses   dead discarded escaped other
  &lt;chr&gt;   &lt;date&gt;     &lt;chr&gt;     &lt;chr&gt;   &lt;dbl&gt;  &lt;dbl&gt;     &lt;dbl&gt;   &lt;dbl&gt; &lt;dbl&gt;
1 salmon  2020-01-01 area      1       31425  28126      3299       0     0
2 salmon  2020-01-01 area      2      324116 277888     46113       0   115
3 salmon  2020-01-01 area      3      844829 776983     63770       0  4076
4 salmon  2020-01-01 area      4      676852 623159     51823       0  1870
5 salmon  2020-01-01 area      5      109269  97627     11424       0   218
6 salmon  2020-01-01 area      6      548921 531193     15710       0  2018</code></pre>
</div>
</div>
</section>
<section id="a-quick-dplyr-refresher" class="level3">
<h3 class="anchored" data-anchor-id="a-quick-dplyr-refresher">A quick dplyr refresher</h3>
<p>dplyr is a grammar of data manipulation, providing a consistent set of verbs that help you solve the most common data manipulation challenges.</p>
<blockquote class="blockquote">
<p><em>“dplyr is a core member of the tidyverse which is a curated collection of R packages specifically for data science. All the tidyverse packages share this opinionated philosophy that data should be in what’s called a tidy format — each variable is a column, each observation is a row, each value is a cell.”</em></p>
</blockquote>
<p>Here are the core functions we’ll use as a foundation:</p>
<p><strong><code>arrange()</code></strong> — changes the ordering of rows:</p>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb5" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb5-1">monthly_losses_data <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">arrange</span>(date)</span></code></pre></div></div>
<p><strong><code>select()</code></strong> — picks variables based on their names:</p>
<div class="cell">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb6" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb6-1">monthly_losses_data <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb6-2">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">select</span>(species, dead, discarded, escaped, other)</span></code></pre></div></div>
</div>
<p><strong><code>summarise()</code></strong> — reduces multiple values down to a single summary:</p>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb7" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb7-1">monthly_losses_data <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb7-2">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">summarize</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">mean_losses =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">mean</span>(losses))</span></code></pre></div></div>
<p><strong><code>group_by()</code></strong> — performs any operation “by group”:</p>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb8" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb8-1">monthly_losses_data <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb8-2">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">group_by</span>(region) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb8-3">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">summarize</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">mean =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">mean</span>(losses))</span></code></pre></div></div>
<p><strong><code>mutate()</code></strong> — adds new variables that are functions of existing variables:</p>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb9" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb9-1">monthly_losses_data <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb9-2">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">mutate</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">total =</span> dead <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> discarded <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> escaped <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> other)</span></code></pre></div></div>
<p><strong><code>case_when()</code></strong> — checks each condition in order and assigns a value based on the first match:</p>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb10" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb10-1">monthly_losses_data <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb10-2">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">mutate</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">loss_rating =</span></span>
<span id="cb10-3">           <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">case_when</span>(losses <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&gt;</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">100000</span> <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">~</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"High"</span>,</span>
<span id="cb10-4">                     losses <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&lt;</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">100000</span> <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">~</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Low"</span>))</span></code></pre></div></div>
<p><strong><code>filter()</code></strong> — picks cases based on their values:</p>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb11" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb11-1">monthly_losses_data <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">filter</span>(region <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">==</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"1"</span>)</span></code></pre></div></div>
<blockquote class="blockquote">
<p><em>“dplyr is a grammar. This kind of syntax — taking your data frame, using a pipe, using a verb, and then specifying the columns — that’s the general syntax that we’ll see throughout this presentation.”</em></p>
</blockquote>
</section>
<section id="dplyr-1.2.0" class="level3">
<h3 class="anchored" data-anchor-id="dplyr-1.2.0">dplyr 1.2.0</h3>
<p>Everything covered below is explored in great detail in the <a href="https://tidyverse.org/blog/2026/02/dplyr-1-2-0/">dplyr 1.2.0 blog post by Davis Vaughan</a>.</p>
<section id="filter_out" class="level4">
<h4 class="anchored" data-anchor-id="filter_out"><code>filter_out()</code></h4>
<section id="the-problem" class="level5">
<h5 class="anchored" data-anchor-id="the-problem">The problem</h5>
<p>Have you ever stared at <code>filter(region == "1")</code> and wondered: am I <em>keeping</em> Region 1 or <em>dropping</em> it?</p>
<blockquote class="blockquote">
<p><em>“The original filter function was optimized for keeping rows. And often, because it was the quickest tool at our disposal or the only tool that we had, we may have forced it to drop rows using negative logic.”</em></p>
</blockquote>
<p>Here’s what that looks like in practice. Say we have a small dataset with an <code>NA</code> in the losses column:</p>
<div class="cell">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb12" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb12-1">monthly_losses_NA</span></code></pre></div></div>
<div class="cell-output cell-output-stdout">
<pre><code># A tibble: 5 × 3
  species region losses
  &lt;chr&gt;   &lt;chr&gt;   &lt;dbl&gt;
1 salmon  1       31425
2 salmon  2      324116
3 salmon  3      844829
4 salmon  3      676852
5 salmon  3          NA</code></pre>
</div>
</div>
<p>We want to drop rows where <code>region == 3</code> and <code>losses &gt; 700000</code>. Using the traditional approach:</p>
<div class="cell">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb14" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb14-1">monthly_losses_NA <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb14-2">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">filter</span>(<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">!</span>(region <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">==</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span> <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&amp;</span> losses <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&gt;</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">700000</span>))</span></code></pre></div></div>
<div class="cell-output cell-output-stdout">
<pre><code># A tibble: 3 × 3
  species region losses
  &lt;chr&gt;   &lt;chr&gt;   &lt;dbl&gt;
1 salmon  1       31425
2 salmon  2      324116
3 salmon  3      676852</code></pre>
</div>
</div>
<p>The row with <code>NA</code> losses was silently dropped too — not what we wanted. To handle NAs correctly with <code>filter()</code>, we’d need:</p>
<div class="cell">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb16" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb16-1">monthly_losses_NA <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb16-2">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">filter</span>(</span>
<span id="cb16-3">    <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">!</span>((region <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">==</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span> <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&amp;</span> <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">!</span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">is.na</span>(region)) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&amp;</span></span>
<span id="cb16-4">             (losses <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&gt;</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">700000</span> <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&amp;</span> <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">!</span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">is.na</span>(losses)))</span>
<span id="cb16-5">    )</span></code></pre></div></div>
<div class="cell-output cell-output-stdout">
<pre><code># A tibble: 4 × 3
  species region losses
  &lt;chr&gt;   &lt;chr&gt;   &lt;dbl&gt;
1 salmon  1       31425
2 salmon  2      324116
3 salmon  3      676852
4 salmon  3          NA</code></pre>
</div>
</div>
</section>
<section id="the-solution-filter_out" class="level5">
<h5 class="anchored" data-anchor-id="the-solution-filter_out">The solution: <code>filter_out()</code></h5>
<blockquote class="blockquote">
<p><em>“Rather than trying to think through negations and logic and things like that, just remember: use <code>filter()</code> to keep rows, use <code>filter_out()</code> to drop rows.”</em></p>
</blockquote>
<div class="cell">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb18" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb18-1">monthly_losses_NA <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb18-2">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">filter_out</span>(region <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">==</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span> <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&amp;</span> losses <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&gt;</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">700000</span>)</span></code></pre></div></div>
<div class="cell-output cell-output-stdout">
<pre><code># A tibble: 4 × 3
  species region losses
  &lt;chr&gt;   &lt;chr&gt;   &lt;dbl&gt;
1 salmon  1       31425
2 salmon  2      324116
3 salmon  3      676852
4 salmon  3          NA</code></pre>
</div>
</div>
<p>dplyr with <code>filter_out()</code> assumes that if a row is <code>NA</code> or unknown, you probably don’t want to drop it — so it only drops rows that definitively meet your criteria.</p>
</section>
</section>
<section id="when_any-and-when_all" class="level4">
<h4 class="anchored" data-anchor-id="when_any-and-when_all"><code>when_any()</code> and <code>when_all()</code></h4>
<section id="the-problem-1" class="level5">
<h5 class="anchored" data-anchor-id="the-problem-1">The problem</h5>
<p>Combining multiple OR conditions with <code>filter()</code> leads to deeply nested, error-prone code:</p>
<div class="cell">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb20" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb20-1">monthly_losses_filters <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb20-2">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">filter</span>(</span>
<span id="cb20-3">    (region <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">%in%</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">c</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"7"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"8"</span>) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&amp;</span> losses <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&gt;</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">400000</span>) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|</span></span>
<span id="cb20-4">           (region <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">%in%</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">c</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"2"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"9"</span>) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&amp;</span> losses <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&gt;</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">300000</span>)</span>
<span id="cb20-5">    )</span></code></pre></div></div>
<div class="cell-output cell-output-stdout">
<pre><code># A tibble: 4 × 3
# Groups:   region [4]
  species region losses
  &lt;chr&gt;   &lt;chr&gt;   &lt;dbl&gt;
1 salmon  2      324116
2 salmon  7      475115
3 salmon  8      442659
4 salmon  9      311127</code></pre>
</div>
</div>
<blockquote class="blockquote">
<p><em>“It starts to indent. You have to remember where you put your parentheses because there are a lot of them. As you can imagine, it can just get very unwieldy to write something like this, especially if you have many OR statements.”</em></p>
</blockquote>
</section>
<section id="the-solution-when_any-and-when_all" class="level5">
<h5 class="anchored" data-anchor-id="the-solution-when_any-and-when_all">The solution: <code>when_any()</code> and <code>when_all()</code></h5>
<p>Use <code>when_any()</code> for OR conditions and <code>when_all()</code> for AND conditions:</p>
<div class="cell">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb22" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb22-1">monthly_losses_filters <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb22-2">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">filter</span>(</span>
<span id="cb22-3">    <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">when_any</span>(</span>
<span id="cb22-4">      (region <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">%in%</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">c</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"7"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"8"</span>) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&amp;</span> losses <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&gt;</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">400000</span>),</span>
<span id="cb22-5">      (region <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">%in%</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">c</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"2"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"9"</span>) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&amp;</span> losses <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&gt;</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">300000</span>)</span>
<span id="cb22-6">    )</span>
<span id="cb22-7">  )</span></code></pre></div></div>
<div class="cell-output cell-output-stdout">
<pre><code># A tibble: 4 × 3
# Groups:   region [4]
  species region losses
  &lt;chr&gt;   &lt;chr&gt;   &lt;dbl&gt;
1 salmon  2      324116
2 salmon  7      475115
3 salmon  8      442659
4 salmon  9      311127</code></pre>
</div>
</div>
<div class="cell">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb24" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb24-1">monthly_losses_filters <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb24-2">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">filter</span>(</span>
<span id="cb24-3">    <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">when_all</span>(</span>
<span id="cb24-4">      region <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">%in%</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">c</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"7"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"8"</span>),</span>
<span id="cb24-5">      losses <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&gt;</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">400000</span></span>
<span id="cb24-6">    )</span>
<span id="cb24-7">  )</span></code></pre></div></div>
<div class="cell-output cell-output-stdout">
<pre><code># A tibble: 2 × 3
# Groups:   region [2]
  species region losses
  &lt;chr&gt;   &lt;chr&gt;   &lt;dbl&gt;
1 salmon  7      475115
2 salmon  8      442659</code></pre>
</div>
</div>
<blockquote class="blockquote">
<p><em>“<code>when_any()</code> and <code>when_all()</code> continue this theme of intent-based coding — you lead with exactly what it is that you want. Your requirements are just separated by a comma, everything is indented at the same level, and hopefully much easier for a colleague to follow your logic.”</em></p>
</blockquote>
<p>Both helpers also work with the new <code>filter_out()</code>.</p>
</section>
</section>
<section id="new-recoding-and-replacing-functions" class="level4">
<h4 class="anchored" data-anchor-id="new-recoding-and-replacing-functions">New recoding and replacing functions</h4>
<section id="some-background" class="level5">
<h5 class="anchored" data-anchor-id="some-background">Some background</h5>
<p>Recoding used to involve choosing between <code>if/else</code>, <code>case_when()</code>, <code>recode()</code>, or <code>recode()</code> + rlang’s <code>!!!</code> splicing operator — each with its own quirky syntax.</p>
<blockquote class="blockquote">
<p><em>“There are so many ways of recoding — if/else, case_when, recode, recode with rlang — and each one is very specific in how it works, each one brings their own set of syntax, and it could get really confusing.”</em></p>
</blockquote>
</section>
<section id="recoding-vs.-replacing" class="level5">
<h5 class="anchored" data-anchor-id="recoding-vs.-replacing">Recoding vs.&nbsp;replacing</h5>
<p>Two important distinctions:</p>
<ul>
<li><strong>Recoding</strong> — creating an entirely new column using values from an existing column</li>
<li><strong>Replacing</strong> — partially updating an existing column with new values</li>
</ul>
</section>
<section id="the-new-family" class="level5">
<h5 class="anchored" data-anchor-id="the-new-family">The new family</h5>
<p>dplyr 1.2.0 introduces three new functions alongside <code>case_when()</code>:</p>
<table class="caption-top table">
<thead>
<tr class="header">
<th>Task</th>
<th>Match by</th>
<th>Function</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>Recode</td>
<td>Conditions</td>
<td><code>case_when()</code></td>
</tr>
<tr class="even">
<td>Recode</td>
<td>Values</td>
<td><code>recode_values()</code></td>
</tr>
<tr class="odd">
<td>Replace</td>
<td>Conditions</td>
<td><code>replace_when()</code></td>
</tr>
<tr class="even">
<td>Replace</td>
<td>Values</td>
<td><code>replace_values()</code></td>
</tr>
</tbody>
</table>
</section>
<section id="recode_values" class="level5">
<h5 class="anchored" data-anchor-id="recode_values"><code>recode_values()</code></h5>
<div class="cell">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb26" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb26-1">po_mapping <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(</span>
<span id="cb26-2">  <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"1"</span> <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">=</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Jæren"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"2"</span> <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">=</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Ryfylke"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"3"</span> <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">=</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Sotra"</span>,</span>
<span id="cb26-3">  <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"4"</span> <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">=</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Stadt"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"5"</span> <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">=</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Hustadvika"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"6"</span> <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">=</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Nordmøre"</span>,</span>
<span id="cb26-4">  <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"7"</span> <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">=</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Nord-Trøndelag"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"8"</span> <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">=</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Bodø"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"9"</span> <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">=</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Vestlfjorden"</span>,</span>
<span id="cb26-5">  <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"10"</span> <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">=</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Andfjorden"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"11"</span> <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">=</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Kvaløya"</span>,</span>
<span id="cb26-6">  <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"12"</span> <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">=</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Vest-Finnmark"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"13"</span> <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">=</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Øst-Finnmark"</span></span>
<span id="cb26-7">)</span></code></pre></div></div>
</div>
<div class="cell">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb27" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb27-1">monthly_losses_data <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb27-2">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">select</span>(species, geo_group, region, losses) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb27-3">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">filter</span>(geo_group <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">==</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"area"</span>) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb27-4">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">mutate</span>(</span>
<span id="cb27-5">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">production_area =</span> region <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb27-6">      <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">recode_values</span>(</span>
<span id="cb27-7">        <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"1"</span> <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">~</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Jæren"</span>,</span>
<span id="cb27-8">        <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"2"</span> <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">~</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Ryfylke"</span>,</span>
<span id="cb27-9">        <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># ...</span></span>
<span id="cb27-10">        <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"13"</span> <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">~</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Øst-Finnmark"</span>,</span>
<span id="cb27-11">        <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">unmatched =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"error"</span></span>
<span id="cb27-12">      )</span>
<span id="cb27-13">  )</span></code></pre></div></div>
</div>
<p>The <code>unmatched = "error"</code> argument is particularly useful:</p>
<blockquote class="blockquote">
<p><em>“Say I was unaware that my dataset actually has 14 regions instead of 13 and I didn’t give it something to recode for region 14. I could put <code>unmatched = "error"</code>. And when I run this, it will actually stop the code and let me know immediately — hey, you didn’t match your list to everything. It’s a good way of cleaning up your pipeline and avoiding those kind of silent errors.”</em></p>
</blockquote>
<p>You can also use a lookup table instead of listing values inline:</p>
<div class="cell">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb28" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb28-1">po_mapping_tibble <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span></span>
<span id="cb28-2">  tibble<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">::</span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">enframe</span>(po_mapping, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">name =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"from"</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">value =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"to"</span>) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb28-3">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">unnest</span>(to)</span>
<span id="cb28-4"></span>
<span id="cb28-5">monthly_losses_data <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb28-6">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">select</span>(species, geo_group, region, losses) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb28-7">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">filter</span>(geo_group <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">==</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"area"</span>) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb28-8">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">mutate</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">production_area =</span></span>
<span id="cb28-9">           <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">recode_values</span>(region,</span>
<span id="cb28-10">                         <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">from =</span> po_mapping_tibble<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>from,</span>
<span id="cb28-11">                         <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">to =</span> po_mapping_tibble<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>to)</span>
<span id="cb28-12">         )</span></code></pre></div></div>
<div class="cell-output cell-output-stdout">
<pre><code># A tibble: 1,512 × 5
   species geo_group region losses production_area
   &lt;chr&gt;   &lt;chr&gt;     &lt;chr&gt;   &lt;dbl&gt; &lt;chr&gt;          
 1 salmon  area      1       31425 Jæren          
 2 salmon  area      2      324116 Ryfylke        
 3 salmon  area      3      844829 Sotra          
 4 salmon  area      4      676852 Stadt          
 5 salmon  area      5      109269 Hustadvika     
 6 salmon  area      6      548921 Nordmøre       
 7 salmon  area      7      231487 Nord-Trøndelag 
 8 salmon  area      8      442659 Bodø           
 9 salmon  area      9      311127 Vestlfjorden   
10 salmon  area      10     288849 Andfjorden     
# ℹ 1,502 more rows</code></pre>
</div>
</div>
</section>
<section id="replace_values" class="level5">
<h5 class="anchored" data-anchor-id="replace_values"><code>replace_values()</code></h5>
<p>Use <code>replace_values()</code> when you want to update specific values within an <em>existing</em> column — all other values stay the same:</p>
<div class="cell">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb30" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb30-1">monthly_losses_data_po <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb30-2">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">mutate</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">production_area =</span> production_area <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb30-3">           <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">replace_values</span>(</span>
<span id="cb30-4">             <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Nordmøre"</span> <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">~</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Nordmøre + Sør-Trøndelag"</span>,</span>
<span id="cb30-5">             <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Nord-Trøndelag"</span> <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">~</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Nord-Trøndelag + Bindal"</span></span>
<span id="cb30-6">             )</span>
<span id="cb30-7">         )</span></code></pre></div></div>
<div class="cell-output cell-output-stdout">
<pre><code># A tibble: 1,512 × 5
   species geo_group region losses production_area         
   &lt;chr&gt;   &lt;chr&gt;     &lt;chr&gt;   &lt;dbl&gt; &lt;chr&gt;                   
 1 salmon  area      1       31425 Jæren                   
 2 salmon  area      2      324116 Ryfylke                 
 3 salmon  area      3      844829 Sotra                   
 4 salmon  area      4      676852 Stadt                   
 5 salmon  area      5      109269 Hustadvika              
 6 salmon  area      6      548921 Nordmøre + Sør-Trøndelag
 7 salmon  area      7      231487 Nord-Trøndelag + Bindal 
 8 salmon  area      8      442659 Bodø                    
 9 salmon  area      9      311127 Vestlfjorden            
10 salmon  area      10     288849 Andfjorden              
# ℹ 1,502 more rows</code></pre>
</div>
</div>
</section>
<section id="replace_when" class="level5">
<h5 class="anchored" data-anchor-id="replace_when"><code>replace_when()</code></h5>
<p><code>case_when()</code> requires a <code>.default</code> argument, otherwise unmatched rows become <code>NA</code>. <code>replace_when()</code> knows you only intend to replace <em>some</em> values — so no <code>.default</code> needed:</p>
<div class="cell">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb32" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb32-1">monthly_losses_data <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb32-2">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">slice</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">4</span>) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb32-3">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">select</span>(species, region, losses) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb32-4">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">mutate</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">losses =</span></span>
<span id="cb32-5">           <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">replace_when</span>(losses,</span>
<span id="cb32-6">                        losses <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&gt;</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">500000</span> <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">~</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">500000</span>)</span>
<span id="cb32-7">         )</span></code></pre></div></div>
<div class="cell-output cell-output-stdout">
<pre><code># A tibble: 4 × 3
  species region losses
  &lt;chr&gt;   &lt;chr&gt;   &lt;dbl&gt;
1 salmon  1       31425
2 salmon  2      324116
3 salmon  3      500000
4 salmon  4      500000</code></pre>
</div>
</div>
</section>
</section>
</section>
<section id="additional-notes" class="level3">
<h3 class="anchored" data-anchor-id="additional-notes">Additional notes</h3>
<ul>
<li><strong><code>case_match()</code> has been soft deprecated</strong> — it has been fully replaced by <code>recode_values()</code> and <code>replace_values()</code>.</li>
<li><strong>Speed improvements</strong> — core functions like <code>if_else()</code> and <code>case_when()</code> have been rewritten in C using the vctrs framework, bringing speed gains across the tidyverse. See the <a href="https://tidyverse.org/blog/2026/02/dplyr-performance/">dplyr performance blog post</a>.</li>
<li><strong>Updating your LLM</strong> — because dplyr 1.2.0 is so new, your AI assistant may not know about <code>filter_out()</code>, <code>when_any()</code>, or the new recode functions. Give it context by pasting the release notes or blog post into the conversation, adding a <code>CLAUDE.md</code> file, or using an MCP server.</li>
</ul>
</section>
<section id="community-feedback-matters" class="level3">
<h3 class="anchored" data-anchor-id="community-feedback-matters">Community feedback matters</h3>
<blockquote class="blockquote">
<p><em>“dplyr 1.2.0 is a direct result of community feedback. The authors are incredibly active on platforms like Bluesky and they don’t just post updates — they also ask for your thoughts. And the reason that dplyr is more efficient, faster, and everything is because the people building it are listening to the people using it. So if you ever find yourself at a point where you have a really messy workaround, I highly encourage you to share it — because you might just inspire the next big feature in 1.3.0.”</em></p>
</blockquote>
<p>Discussions happen in the <a href="https://github.com/tidyverse/tidyups">Tidyups repo</a> on GitHub, where the tidyverse team proposes ideas and invites community comment.</p>
</section>
<section id="summary-1" class="level3">
<h3 class="anchored" data-anchor-id="summary-1">Summary</h3>
<p>dplyr 1.2.0 introduces:</p>
<ul>
<li><strong><code>filter_out()</code></strong> — the missing complement to <code>filter()</code>, for dropping rows cleanly and safely</li>
<li><strong><code>when_any()</code> and <code>when_all()</code></strong> — helpers for expressing OR and AND conditions more clearly inside <code>filter()</code> and <code>filter_out()</code></li>
<li><strong><code>recode_values()</code></strong>, <strong><code>replace_values()</code></strong>, and <strong><code>replace_when()</code></strong> — a complete, coherent family for recoding and replacing values</li>
</ul>
<p>To upgrade:</p>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb34" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb34-1"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">install.packages</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"pak"</span>)</span>
<span id="cb34-2">pak<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">::</span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">pak</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"dplyr"</span>)</span></code></pre></div></div>
</section>
</section>
<section id="links" class="level2">
<h2 class="anchored" data-anchor-id="links">Links</h2>
<ul>
<li><a href="https://tidyverse.org">tidyverse.org</a></li>
<li><a href="https://dplyr.tidyverse.org">dplyr</a></li>
<li><a href="https://tidyverse.org/blog/2026/02/dplyr-1-2-0/">dplyr 1.2.0 blog post</a></li>
<li><a href="https://tidyverse.org/blog/2026/02/dplyr-performance/">dplyr performance blog post</a></li>
<li><a href="https://www.linkedin.com/posts/libbyheeren_rstats-activity-7343291858275487744-XlPl/?rcm=ACoAAAy7IywB2qfaREGGoCca5XkthJ2hLjru6ts">Libby’s LinkedIn post</a></li>
<li><a href="https://github.com/tidyverse/tidyups">Tidyups repo</a></li>
<li><a href="https://cghlewis.com/blog/dplyr_update/">Crystal Lewis blog post</a></li>
<li><a href="https://www.youtube.com/watch?v=zYCAz88WjHc&amp;list=PL9HYL-VRX0oSeWeMEGQt0id7adYQXebhT">Data Science Lab YouTube playlist</a></li>
<li><a href="https://tidydatatutor.com/vis.html#">Tidy Data Tutor</a></li>
<li><a href="https://github.com/rfordatascience/tidytuesday/blob/main/data/2026/2026-03-17/readme.md">TidyTuesday dataset</a></li>
<li><a href="https://github.com/EmilHvitfeldt/quarto-revealjs-editable">quarto-revealjs-editable extension by Emil Hvitfeldt</a></li>
</ul>


</section>

 ]]></description>
  <guid>https://ivelasq.rbind.io/talk/dplyr-1-2-0/</guid>
  <pubDate>Wed, 18 Mar 2026 00:00:00 GMT</pubDate>
  <media:content url="https://ivelasq.rbind.io/talk/dplyr-1-2-0/thumbnail.jpeg" medium="image" type="image/jpeg"/>
</item>
<item>
  <title>Categorical Survey of Complex Survey Data in R</title>
  <dc:creator>Rebecca Powell</dc:creator>
  <dc:creator>Isabella Velásquez</dc:creator>
  <link>https://ivelasq.rbind.io/talk/categorical-survey-analysis/</link>
  <description><![CDATA[ 




<a href="https://www.mapor.org/2025-annual-conference/" class="btn btn-secondary">
  <i class="bi bi-calendar-event"></i>&nbsp;&nbsp;Event
</a>

<a href="https://tidy-survey-r.github.io/mapor-2025-short-course/full-slide-deck.html#/title-slide/" class="btn btn-secondary" target="_blank" rel="noopener noreferrer">
  <i class="bi bi-tv"></i>&nbsp;&nbsp;Slides
</a>

<a href="https://github.com/tidy-survey-r/mapor-2025-short-course" class="btn btn-secondary" target="_blank" rel="noopener noreferrer">
  <i class="bi bi-github"></i>&nbsp;&nbsp;Repo
</a>
<p><br></p>
<section id="details" class="level2">
<h2 class="anchored" data-anchor-id="details">Details</h2>
<ul style="list-style-type: none; padding-left: 0;">
<li>
👥 <a href="https://www.mapor.org/2025-annual-conference/">MAPOR 2025</a>
</li>
<li>
📆 21 November 2025 // 08:30 AM CT
</li>
<li>
🌆️ Chicago, IL
</li>
</ul>
</section>
<section id="description" class="level2">
<h2 class="anchored" data-anchor-id="description">Description</h2>
<p>This interactive short course will introduce how to analyze categorical survey data in R. We will cover the R functions needed to create the survey design object to account for the sampling design, obtain weighted proportions from survey data, and conduct tests and simple linear regression models. Throughout the course, you will get hands-on experience using data from the American National Election Studies. We will be using Posit Cloud, so you do not need to have R or RStudio preinstalled on your computer. For the best learning experience, we recommend you have prior experience with R and the tidyverse, including familiarity with <code>summarize()</code> and <code>group_by()</code>.</p>
</section>
<section id="slides" class="level2">
<h2 class="anchored" data-anchor-id="slides">Slides</h2>
<iframe src="https://tidy-survey-r.github.io/mapor-2025-short-course/full-slide-deck.html#/title-slide/" height="415" width="800">
</iframe>


</section>

 ]]></description>
  <guid>https://ivelasq.rbind.io/talk/categorical-survey-analysis/</guid>
  <pubDate>Fri, 21 Nov 2025 00:00:00 GMT</pubDate>
  <media:content url="https://ivelasq.rbind.io/talk/categorical-survey-analysis/thumbnail.jpeg" medium="image" type="image/jpeg"/>
</item>
<item>
  <title>Creating Polished, Branded Documents with Quarto</title>
  <dc:creator>Isabella Velásquez</dc:creator>
  <link>https://ivelasq.rbind.io/talk/branded-quarto-rpharma/</link>
  <description><![CDATA[ 




<a href="https://rinpharma.com/" class="btn btn-secondary">
  <i class="bi bi-calendar-event"></i>&nbsp;&nbsp;Event
</a>

<a href="https://019a4f2d-6b79-72c1-834b-c2a9488f9ec8.share.connect.posit.cloud/" class="btn btn-secondary" target="_blank" rel="noopener noreferrer">
  <i class="bi bi-link-45deg"></i>&nbsp;&nbsp;Website
</a>

<a href="https://github.com/ivelasq/rpharma2025-quarto-exercises" class="btn btn-secondary" target="_blank" rel="noopener noreferrer">
  <i class="bi bi-card-checklist"></i>&nbsp;&nbsp;Exercises
</a>

<a href="https://github.com/ivelasq/2025-11-04_branded-quarto/" class="btn btn-secondary" target="_blank" rel="noopener noreferrer">
  <i class="bi bi-github"></i>&nbsp;&nbsp;Repo
</a>

<a href="https://www.youtube.com/watch?v=sVMgLKXJ4uc" class="btn btn-secondary" target="_blank" rel="noopener noreferrer">
  <i class="bi bi-youtube"></i>&nbsp;&nbsp;Recording
</a>   
<p><br></p>
<section id="details" class="level2">
<h2 class="anchored" data-anchor-id="details">Details</h2>
<ul style="list-style-type: none; padding-left: 0;">
<li>
👥 <a href="https://rinpharma.com/">R/Pharma 2025</a>
</li>
<li>
📆 04 November 2025 // 01:00 PM ET
</li>
<li>
💻️ Virtual
</li>
</ul>
</section>
<section id="description" class="level2">
<h2 class="anchored" data-anchor-id="description">Description</h2>
<p>Join us for a hands-on, one-day workshop at R/Pharma, where we’ll explore the versatility of Quarto output formats. You will learn how to create dynamic websites, professional PDF documents, engaging presentations, and interactive dashboards using Quarto. This workshop highlights Quarto’s powerful theming capabilities, including the new support for brand.yml, which ensures that your work maintains a professional and cohesive style across all formats.</p>
<h2 class="anchored">
<a href="https://019a4f2d-6b79-72c1-834b-c2a9488f9ec8.share.connect.posit.cloud/" target="_blank" rel="noopener noreferrer"> Website ↗ </a>
</h2>
<p>Find the materials, exercises, and slides on the website.</p>
</section>
<section id="recording" class="level2">
<h2 class="anchored" data-anchor-id="recording">Recording</h2>
<iframe width="800" height="415" src="https://www.youtube.com/embed/sVMgLKXJ4uc?si=tXux1g2JPpQGwVZu" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen="">
</iframe>


</section>

 ]]></description>
  <guid>https://ivelasq.rbind.io/talk/branded-quarto-rpharma/</guid>
  <pubDate>Tue, 04 Nov 2025 00:00:00 GMT</pubDate>
  <media:content url="https://ivelasq.rbind.io/talk/branded-quarto-rpharma/thumbnail.gif" medium="image" type="image/gif"/>
</item>
<item>
  <title>Automating Repetitive Reports with Quarto</title>
  <dc:creator>Isabella Velásquez</dc:creator>
  <link>https://ivelasq.rbind.io/talk/automated-quarto-reports/</link>
  <description><![CDATA[ 




<a href="https://www.mapor.org/2025-mapor-fall-webinar-series/" class="btn btn-secondary">
  <i class="bi bi-calendar-event"></i>&nbsp;&nbsp;Event
</a>

<a href="https://ivelasq-automating-quarto.share.connect.posit.cloud/#/title-slide" class="btn btn-secondary" target="_blank" rel="noopener noreferrer">
  <i class="bi bi-tv"></i>&nbsp;&nbsp;Slides
</a>

<a href="https://github.com/ivelasq/2025-10-24_automating-quarto" class="btn btn-secondary" target="_blank" rel="noopener noreferrer">
  <i class="bi bi-github"></i>&nbsp;&nbsp;Repo
</a>

<a href="https://github.com/ivelasq/reports-with-quarto-exercises" class="btn btn-secondary" target="_blank" rel="noopener noreferrer">
  <i class="bi bi-card-checklist"></i>&nbsp;&nbsp;Exercises
</a>
<p><br></p>
<section id="details" class="level2">
<h2 class="anchored" data-anchor-id="details">Details</h2>
<ul style="list-style-type: none; padding-left: 0;">
<li>
👥 <a href="https://www.mapor.org/2025-mapor-fall-webinar-series/">MAPOR Fall Webinar Series 2025</a>
</li>
<li>
📆 24 October 2025 // 12:00 PM CT
</li>
<li>
💻️ Virtual
</li>
</ul>
</section>
<section id="description" class="level2">
<h2 class="anchored" data-anchor-id="description">Description</h2>
<p>Writing reports often means repeating the same tasks: copying results, updating text, and exporting to different formats. Quarto is a technical publishing tool that streamlines this process by combining text, code, and visuals together in one document. Instead of rewriting the same report with minor changes, you can generate multiple versions from a single template. In this webinar, we’ll walk through practical examples, such as client-specific reports and recurring updates, to show how Quarto helps you save time, reduce errors, and deliver consistent, professional reports.</p>
</section>
<section id="slides" class="level2">
<h2 class="anchored" data-anchor-id="slides">Slides</h2>
<iframe src="https://ivelasq-automating-quarto.share.connect.posit.cloud/#/title-slide" height="415" width="800">
</iframe>


</section>

 ]]></description>
  <guid>https://ivelasq.rbind.io/talk/automated-quarto-reports/</guid>
  <pubDate>Fri, 24 Oct 2025 00:00:00 GMT</pubDate>
  <media:content url="https://ivelasq.rbind.io/talk/automated-quarto-reports/thumbnail.jpeg" medium="image" type="image/jpeg"/>
</item>
<item>
  <title>Positron for RStudio Users: A Gentle Introduction</title>
  <dc:creator>Isabella Velásquez</dc:creator>
  <link>https://ivelasq.rbind.io/talk/positron-for-rstudio-users/</link>
  <description><![CDATA[ 




<a href="https://www.meetup.com/rladies-gaborone/events/311167479/" class="btn btn-secondary">
  <i class="bi bi-calendar-event"></i>&nbsp;&nbsp;Event
</a>

<a href="../positron-for-rstudio-users-presentation/index.html" class="btn btn-secondary" target="_blank" rel="noopener noreferrer">
  <i class="bi bi-tv"></i>&nbsp;&nbsp;Slides
</a>
    
<a href="https://www.youtube.com/watch?v=2fOQzgkxi6g" class="btn btn-secondary" target="_blank" rel="noopener noreferrer">
  <i class="bi bi-youtube"></i>&nbsp;&nbsp;Recording
</a>   
<p><br></p>
<section id="details" class="level2">
<h2 class="anchored" data-anchor-id="details">Details</h2>
<ul style="list-style-type: none; padding-left: 0;">
<li>
👥 <a href="https://www.meetup.com/rladies-gaborone/events/311167479/">R-Ladies Gaborone</a>
</li>
<li>
📆 09 October 2025 // 11:00 AM CT
</li>
<li>
💻️ Virtual
</li>
</ul>
</section>
<section id="description" class="level2">
<h2 class="anchored" data-anchor-id="description">Description</h2>
<p>Curious about Positron, the new open-source data science IDE from Posit? This session will walk RStudio users through the basics of Positron, highlight familiar features, and show what’s new. Whether you’re exploring it for the first time or considering a switch, you’ll leave with a clear sense of how Positron can fit into your workflow.</p>
</section>
<section id="slides" class="level2">
<h2 class="anchored" data-anchor-id="slides">Slides</h2>
<iframe src="../positron-for-rstudio-users-presentation/index.html" height="415" width="800">
</iframe>
</section>
<section id="recording" class="level2">
<h2 class="anchored" data-anchor-id="recording">Recording</h2>
<iframe width="800" height="415" src="https://www.youtube.com/embed/2fOQzgkxi6g?si=rvkYtrvAbehQUGCm" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen="">
</iframe>


</section>

 ]]></description>
  <guid>https://ivelasq.rbind.io/talk/positron-for-rstudio-users/</guid>
  <pubDate>Thu, 09 Oct 2025 00:00:00 GMT</pubDate>
  <media:content url="https://ivelasq.rbind.io/talk/positron-for-rstudio-users/thumbnail.jpeg" medium="image" type="image/jpeg"/>
</item>
<item>
  <title>Branded Websites, Presentations, Dashboards, and PDFs with Quarto</title>
  <dc:creator>Isabella Velásquez</dc:creator>
  <dc:creator>Sara Altman</dc:creator>
  <link>https://ivelasq.rbind.io/talk/branded-quarto/</link>
  <description><![CDATA[ 




<a href="https://posit.co/conference/" class="btn btn-secondary">
  <i class="bi bi-calendar-event"></i>&nbsp;&nbsp;Event
</a>

<a href="https://posit-conf-2025.github.io/quarto-brand/" class="btn btn-secondary" target="_blank" rel="noopener noreferrer">
  <i class="bi bi-link-45deg"></i>&nbsp;&nbsp;Website
</a>

<a href="https://github.com/posit-conf-2025/quarto-brand" class="btn btn-secondary" target="_blank" rel="noopener noreferrer">
  <i class="bi bi-github"></i>&nbsp;&nbsp;Repo
</a>

<a href="https://github.com/posit-dev/quarto-brand-exercises/" class="btn btn-secondary" target="_blank" rel="noopener noreferrer">
  <i class="bi bi-card-checklist"></i>&nbsp;&nbsp;Exercises
</a>
<p><br></p>
<section id="details" class="level2">
<h2 class="anchored" data-anchor-id="details">Details</h2>
<ul style="list-style-type: none; padding-left: 0;">
<li>
👥 <a href="https://posit.co/conference/">posit::conf(2025)</a>
</li>
<li>
📆 16 September 2025 // 09:00 AM ET
</li>
<li>
🍑️ Atlanta, GA
</li>
</ul>
</section>
<section id="description" class="level2">
<h2 class="anchored" data-anchor-id="description">Description</h2>
<p>Join us for a hands-on, one-day workshop at posit::conf(2025), where we’ll explore the versatility of <a href="https://quarto.org/">Quarto</a> output formats. Designed for data scientists, analysts, and content creators, this immersive session will teach you how to craft cohesive reports and presentations while refining your workflow with Quarto’s latest features.</p>
<p>You will learn how to create dynamic websites, professional PDF documents, engaging presentations, and interactive dashboards using Quarto. This workshop highlights Quarto’s powerful theming capabilities, including the new support for brand.yml, which ensures that your work maintains a professional and cohesive style across all formats.</p>
<p>By the end of the session, you’ll be equipped to:</p>
<ul>
<li>Build and deploy Quarto websites.</li>
<li>Generate professional presentations and PDF reports.</li>
<li>Create interactive dashboards for data visualization and reporting.</li>
<li>Use brand.yml to define and apply consistent theming across all outputs.</li>
</ul>
<p>Whether you’re looking to enhance your personal projects or streamline organizational outputs, this workshop will equip you with the tools to create polished, professional results.</p>
</section>
<section id="website" class="level2">
<h2 class="anchored" data-anchor-id="website"><a href="https://posit-conf-2025.github.io/quarto-brand/" target="_blank">Website</a></h2>
<iframe src="https://posit-conf-2025.github.io/quarto-brand/" width="800" height="1100">
</iframe>


</section>

 ]]></description>
  <guid>https://ivelasq.rbind.io/talk/branded-quarto/</guid>
  <pubDate>Tue, 16 Sep 2025 00:00:00 GMT</pubDate>
  <media:content url="https://ivelasq.rbind.io/talk/branded-quarto/thumbnail.jpeg" medium="image" type="image/jpeg"/>
</item>
<item>
  <title>Complex Survey Data Analysis: A Tidy Introduction with {srvyr} and {survey}</title>
  <dc:creator>Stephanie Zimmer</dc:creator>
  <dc:creator>Rebecca Powell</dc:creator>
  <dc:creator>Isabella Velásquez</dc:creator>
  <link>https://ivelasq.rbind.io/talk/survey-data-tutorial/</link>
  <description><![CDATA[ 




<a href="https://user2025.r-project.org/" class="btn btn-secondary">
  <i class="bi bi-calendar-event"></i>&nbsp;&nbsp;Event
</a>

<a href="https://tidy-survey-r.github.io/user-2025-survey-data-tutorial/" class="btn btn-secondary" target="_blank" rel="noopener noreferrer">
  <i class="bi bi-link-45deg"></i>&nbsp;&nbsp;Website
</a>

<a href="https://github.com/tidy-survey-r/user-2025-survey-data-tutorial/" class="btn btn-secondary" target="_blank" rel="noopener noreferrer">
  <i class="bi bi-github"></i>&nbsp;&nbsp;Repo
</a>
<p><br></p>
<section id="details" class="level2">
<h2 class="anchored" data-anchor-id="details">Details</h2>
<ul style="list-style-type: none; padding-left: 0;">
<li>
👥 <a href="https://user2025.r-project.org/">useR! 2025</a>
</li>
<li>
📆 08 August 2025 // 01:00 PM ET
</li>
<li>
💙️ Duke University
</li>
</ul>
</section>
<section id="description" class="level2">
<h2 class="anchored" data-anchor-id="description">Description</h2>
<p>This interactive tutorial will introduce how to conduct analysis of survey data in R. We will first introduce a unifying workflow of tidy survey analysis in R for analysis of survey microdata with weights. We will cover topics of descriptive analysis, including functions to obtain weighted proportions, means, quantiles, and correlations from survey data. Then, we will discuss some statistical testing, including t-tests for comparing means and χ-squared tests for comparing proportions. Finally, we will discuss common probability sampling designs and how to create the survey design objects in R to account for the sampling design. The tutorial will include time for exercises using data from the 2020 American National Election Study and the 2020 Residential Energy Consumption Survey, so you can get hands-on experience with the functions. We will be using Posit Cloud, so you do not need to have R or RStudio preinstalled on your computer. For the best learning experience, we recommend you have some prior experience with R and the tidyverse, including familiarity with <code>mutate()</code>, <code>summarize()</code>, <code>count()</code>, and <code>group_by()</code>.</p>
</section>
<section id="website" class="level2">
<h2 class="anchored" data-anchor-id="website"><a href="https://tidy-survey-r.github.io/user-2025-survey-data-tutorial/" target="_blank">Website</a></h2>
<iframe src="https://tidy-survey-r.github.io/user-2025-survey-data-tutorial/" height="1850" width="800">
</iframe>


</section>

 ]]></description>
  <guid>https://ivelasq.rbind.io/talk/survey-data-tutorial/</guid>
  <pubDate>Fri, 08 Aug 2025 00:00:00 GMT</pubDate>
  <media:content url="https://ivelasq.rbind.io/talk/survey-data-tutorial/thumbnail.jpeg" medium="image" type="image/jpeg"/>
</item>
<item>
  <title>Quarto—To Tell Your Story with Data</title>
  <dc:creator>Isabella Velásquez</dc:creator>
  <link>https://ivelasq.rbind.io/talk/quarto-tell-your-story/</link>
  <description><![CDATA[ 




<a href="https://community.amstat.org/gasp/home" class="btn btn-secondary">
  <i class="bi bi-calendar-event"></i>&nbsp;&nbsp;Event
</a>

<a href="https://ivelasq-gasp2025-quarto.share.connect.posit.cloud/" class="btn btn-secondary" target="_blank" rel="noopener noreferrer">
  <i class="bi bi-link-45deg"></i>&nbsp;&nbsp;Website
</a>

<a href="https://github.com/ivelasq/gasp2025-quarto-exercises" class="btn btn-secondary" target="_blank" rel="noopener noreferrer">
  <i class="bi bi-card-checklist"></i>&nbsp;&nbsp;Exercises
</a>

<a href="https://github.com/ivelasq/2025-06-26_intro-to-quarto" class="btn btn-secondary" target="_blank" rel="noopener noreferrer">
  <i class="bi bi-github"></i>&nbsp;&nbsp;Repo
</a>

<a href="https://www.youtube.com/watch?v=P5YfCELjaCM" class="btn btn-secondary" target="_blank" rel="noopener noreferrer">
  <i class="bi bi-youtube"></i>&nbsp;&nbsp;Recording
</a>
<p><br></p>
<section id="details" class="level2">
<h2 class="anchored" data-anchor-id="details">Details</h2>
<ul style="list-style-type: none; padding-left: 0;">
<li>
👥 <a href="https://community.amstat.org/gasp/home">Government Advances in Statistical Programming (GASP) 2025</a>
</li>
<li>
📆 26 June 2025 // 10:30 AM ET
</li>
<li>
💻️ Virtual
</li>
</ul>
</section>
<section id="description" class="level2">
<h2 class="anchored" data-anchor-id="description">Description</h2>
<p>Join us for a 75-minute introduction to Quarto, the next-generation scientific and technical publishing system. In this workshop, you’ll learn the fundamentals of Quarto. We’ll cover document creation, code integration, and output customization, equipping you to build your own Quarto documents.</p>
</section>
<section id="website" class="level2">
<h2 class="anchored" data-anchor-id="website"><a href="https://ivelasq-gasp2025-quarto.share.connect.posit.cloud/" target="_blank">Website</a></h2>
<iframe src="https://ivelasq-gasp2025-quarto.share.connect.posit.cloud/" width="800" height="1250">
</iframe>
</section>
<section id="recording" class="level2">
<h2 class="anchored" data-anchor-id="recording">Recording</h2>
<iframe width="800" height="415" src="https://www.youtube.com/embed/P5YfCELjaCM?si=Dk_KQ1et3OaV8CcT" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen="">
</iframe>


</section>

 ]]></description>
  <guid>https://ivelasq.rbind.io/talk/quarto-tell-your-story/</guid>
  <pubDate>Thu, 26 Jun 2025 00:00:00 GMT</pubDate>
  <media:content url="https://ivelasq.rbind.io/talk/quarto-tell-your-story/thumbnail.jpeg" medium="image" type="image/jpeg"/>
</item>
<item>
  <title>Build Automated, Tailored Marketing Dashboards for Optimized Marketing Spend</title>
  <dc:creator>Isabella Velásquez</dc:creator>
  <link>https://ivelasq.rbind.io/talk/automated-tailored-shiny/</link>
  <description><![CDATA[ 




<a href="https://posit.co/workflow-demo/build-automated-tailored-marketing-dashboards-for-optimized-marketing-spend/" class="btn btn-secondary">
  <i class="bi bi-calendar-event"></i>&nbsp;&nbsp;Event
</a>

<a href="https://ivelasq-2025-06-25-marketing-demo.share.connect.posit.cloud/" class="btn btn-secondary" target="_blank" rel="noopener noreferrer">
  <i class="bi bi-tv"></i>&nbsp;&nbsp;Slides
</a>

<a href="https://github.com/ivelasq/2025-06-25_marketing-demo/" class="btn btn-secondary" target="_blank" rel="noopener noreferrer">
  <i class="bi bi-github"></i>&nbsp;&nbsp;Repo
</a>

<a href="https://www.youtube.com/watch?v=TL0OCJVDqtI" class="btn btn-secondary" target="_blank" rel="noopener noreferrer">
  <i class="bi bi-youtube"></i>&nbsp;&nbsp;Recording
</a>
<p><br></p>
<section id="details" class="level2">
<h2 class="anchored" data-anchor-id="details">Details</h2>
<ul style="list-style-type: none; padding-left: 0;">
<li>
👥 <a href="https://posit.co/events/">End-to-End Workflow With Posit Team</a>
</li>
<li>
📆 25 June 2025 // 11:00 AM ET
</li>
<li>
💻️ Virtual
</li>
</ul>
</section>
<section id="description" class="level2">
<h2 class="anchored" data-anchor-id="description">Description</h2>
<p>Scenario: Imagine the weekly scramble at DemoCo. Isabella, a lonely Marketing analyst, spends hours every Friday manually compiling marketing lead performance data from Salesforce, website logs, and event records into a sprawling Excel report. The tedious, redundant process is both a time sink and a bottleneck.</p>
<p>Marketing Leadership, who need to identify top-performing platforms, find the mass amount of information in the report confusing. They constantly return to Isabella for clarification or, even worse, don’t reach back out and make misinformed decisions on critical budget allocation. Determined, Isabella decides it’s finally time to automate and tailor this critical dashboard, and save headaches for both Leadership and herself.</p>
<p>In this demo, you will learn how to:</p>
<ol type="1">
<li>Transform redundant, manual, error-prone data compilation into an automated lead performance dashboard with Shiny</li>
<li>Integrate diverse marketing data sources for a holistic view</li>
<li>Build tailored marketing KPI dashboards that address Leadership’s specific questions</li>
<li>Use drill-downs, data visualizations, and LLM-powered summaries to reduce data overload and clarify complex takeaways instantly</li>
<li>Provide flexibility in dashboard functionality to meet diverse preferences and needs, from pre-selected insights derived directly from the data to implementing an LLM-powered analytics option</li>
</ol>
</section>
<section id="slides" class="level2">
<h2 class="anchored" data-anchor-id="slides">Slides</h2>
<iframe src="https://ivelasq-2025-06-25-marketing-demo.share.connect.posit.cloud/" height="415" width="800">
</iframe>
</section>
<section id="recording" class="level2">
<h2 class="anchored" data-anchor-id="recording">Recording</h2>
<iframe width="800" height="415" src="https://www.youtube.com/embed/TL0OCJVDqtI?si=-l2ZRNf14DqmrmxD" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen="">
</iframe>


</section>

 ]]></description>
  <guid>https://ivelasq.rbind.io/talk/automated-tailored-shiny/</guid>
  <pubDate>Wed, 25 Jun 2025 00:00:00 GMT</pubDate>
  <media:content url="https://ivelasq.rbind.io/talk/automated-tailored-shiny/thumbnail.jpeg" medium="image" type="image/jpeg"/>
</item>
<item>
  <title>Choosing the right tool for interactive dashboards: flexdashboard, Quarto, and Shiny</title>
  <dc:creator>Isabella Velásquez</dc:creator>
  <link>https://ivelasq.rbind.io/talk/interactive-dashboard-tools/</link>
  <description><![CDATA[ 




<a href="https://www.shinyconf.com/" class="btn btn-secondary">
  <i class="bi bi-calendar-event"></i>&nbsp;&nbsp;Event
</a>

<a href="https://ivelasq-shinyconf2025.share.connect.posit.cloud/#/section" class="btn btn-secondary" target="_blank" rel="noopener noreferrer">
  <i class="bi bi-tv"></i>&nbsp;&nbsp;Slides
</a>

<a href="https://github.com/ivelasq/shinyconf2025" class="btn btn-secondary" target="_blank" rel="noopener noreferrer">
  <i class="bi bi-github"></i>&nbsp;&nbsp;Repo
</a>
<p><br></p>
<section id="details" class="level2">
<h2 class="anchored" data-anchor-id="details">Details</h2>
<ul style="list-style-type: none; padding-left: 0;">
<li>
🔔 <a href="https://www.shinyconf.com/">ShinyConf 2025</a>
</li>
<li>
📆 10 April 2025 // 07:10 AM CT
</li>
<li>
💻️ Virtual
</li>
</ul>
</section>
<section id="description" class="level2">
<h2 class="anchored" data-anchor-id="description">Description</h2>
<p>The landscape of interactive dashboards is rich for R and Python users thanks to powerful tools like flexdashboard and Shiny. The release of Quarto v1.5 introduced built-in dashboard capabilities, presenting even more exciting possibilities. In this talk, we’ll compare each tool and provide practical heuristics to help you select the best option for your needs, whether you’re building lightweight reports, dynamic web apps, or something in between.</p>
</section>
<section id="slides" class="level2">
<h2 class="anchored" data-anchor-id="slides">Slides</h2>
<iframe src="https://ivelasq-shinyconf2025.share.connect.posit.cloud/#/section" height="415" width="800">
</iframe>


</section>

 ]]></description>
  <guid>https://ivelasq.rbind.io/talk/interactive-dashboard-tools/</guid>
  <pubDate>Thu, 10 Apr 2025 00:00:00 GMT</pubDate>
  <media:content url="https://ivelasq.rbind.io/talk/interactive-dashboard-tools/thumbnail.jpeg" medium="image" type="image/jpeg"/>
</item>
<item>
  <title>Brand your Quarto projects with brand.yml</title>
  <dc:creator>Isabella Velásquez</dc:creator>
  <link>https://ivelasq.rbind.io/talk/brand-yml/</link>
  <description><![CDATA[ 




<a href="https://www.meetup.com/rladies-philly/events/306157885/?eventOrigin=group_events_list" class="btn btn-secondary">
  <i class="bi bi-calendar-event"></i>&nbsp;&nbsp;Event
</a>

<a href="https://ivelasq-branded-quarto.share.connect.posit.cloud/#/section" class="btn btn-secondary" target="_blank" rel="noopener noreferrer">
  <i class="bi bi-tv"></i>&nbsp;&nbsp;Slides
</a>

<a href="https://github.com/ivelasq/2025-03-12_branded-quarto/" class="btn btn-secondary" target="_blank" rel="noopener noreferrer">
  <i class="bi bi-github"></i>&nbsp;&nbsp;Repo
</a>

<a href="https://www.youtube.com/watch?v=mTuhQ64P3qc" class="btn btn-secondary" target="_blank" rel="noopener noreferrer">
  <i class="bi bi-youtube"></i>&nbsp;&nbsp;Recording
</a>  
<p><br></p>
<section id="details" class="level2">
<h2 class="anchored" data-anchor-id="details">Details</h2>
<ul style="list-style-type: none; padding-left: 0;">
<li>
🔔 <a href="https://www.meetup.com/rladies-philly/events/306157885/?eventOrigin=group_events_list">R-Ladies Philly</a>
</li>
<li>
📆 12 March 2025 // 11:00 AM CT
</li>
<li>
💻️ Virtual
</li>
</ul>
</section>
<section id="description" class="level2">
<h2 class="anchored" data-anchor-id="description">Description</h2>
<p>Maintaining a consistent brand identity across data science outputs is essential for clear communication and a professional image. This talk introduces <a href="https://posit-dev.github.io/brand-yml/">brand.yml</a>, a powerful new tool designed to streamline adherence to organizational style guides within the Quarto publishing system. brand.yml simplifies the creation of visually consistent materials that perfectly align with your organization’s brand guidelines in HTML reports, presentations, websites, and dashboards.</p>
<p>We’ll explore how brand.yml allows you to define your brand’s visual identity, including colors, fonts, logos, and more, in a single, centralized location. You will learn how to integrate this configuration file into your Quarto projects, automatically applying the defined style guide to various outputs like reports, presentations, websites, and more. Beyond basic integration, I’ll share practical tips and demonstrate tools that simplify the process of designing and managing your brand.yml file to make brand customization even easier.</p>
<p>Join us to discover how brand.yml can elevate your Quarto documents to a new level of professionalism to ensure that your work is more impactful and on-brand.</p>
</section>
<section id="slides" class="level2">
<h2 class="anchored" data-anchor-id="slides">Slides</h2>
<iframe src="https://ivelasq-branded-quarto.share.connect.posit.cloud/#/section" height="415" width="800">
</iframe>
</section>
<section id="recording" class="level2">
<h2 class="anchored" data-anchor-id="recording">Recording</h2>
<p><iframe width="800" height="450" src="https://www.youtube.com/embed/mTuhQ64P3qc?si=C0XeoBPmb6jY4NqG" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen=""></iframe></p>


</section>

 ]]></description>
  <guid>https://ivelasq.rbind.io/talk/brand-yml/</guid>
  <pubDate>Wed, 12 Mar 2025 00:00:00 GMT</pubDate>
  <media:content url="https://ivelasq.rbind.io/talk/brand-yml/thumbnail.jpeg" medium="image" type="image/jpeg"/>
</item>
<item>
  <title>Tidy Data, Weighted Insights: Analyzing Complex Survey Data in R</title>
  <dc:creator>Stephanie Zimmer</dc:creator>
  <dc:creator>Rebecca Powell</dc:creator>
  <dc:creator>Isabella Velásquez</dc:creator>
  <link>https://ivelasq.rbind.io/talk/tidy-data-weighted-analysis/</link>
  <description><![CDATA[ 




<a href=" https://www.meetup.com/rladies-amsterdam/events/305454925/?eventOrigin=group_past_events" class="btn btn-secondary">
  <i class="bi bi-calendar-event"></i>&nbsp;&nbsp;Event
</a>

<a href="https://tidy-survey-r.github.io/site/talks/talk-rladies-ams-rtp.html#/title-slide" class="btn btn-secondary" target="_blank" rel="noopener noreferrer">
  <i class="bi bi-tv"></i>&nbsp;&nbsp;Slides
</a>

<a href="https://www.youtube.com/watch?v=ip78qoxoZGc" class="btn btn-secondary" target="_blank" rel="noopener noreferrer">
  <i class="bi bi-youtube"></i>&nbsp;&nbsp;Recording
</a>  
<p><br></p>
<section id="details" class="level2">
<h2 class="anchored" data-anchor-id="details">Details</h2>
<ul style="list-style-type: none; padding-left: 0;">
<li>
👥 <a href="https://www.meetup.com/rladies-amsterdam/events/305454925/">R-Ladies Amsterdam</a> and <a href="https://www.meetup.com/rladies-rtp/events/305348585/">R-Ladies RTP</a>
</li>
<li>
📆 25 February 2025 // 11:00 AM CT
</li>
<li>
💻️ Virtual
</li>
</ul>
</section>
<section id="description" class="level2">
<h2 class="anchored" data-anchor-id="description">Description</h2>
<p>Surveys are powerful tools, but to ensure the accurate interpretation of results, they require specific analysis methods. With the {srvyr} package and {tidyverse} family of functions, we are able to analyze survey data with weights to derive meaningful results. Our new book, Exploring Complex Survey Data Analysis Using R, goes through how to do this step-by-step. You can view the book here: https://tidy-survey-r.github.io/tidy-survey-book/.</p>
</section>
<section id="slides" class="level2">
<h2 class="anchored" data-anchor-id="slides">Slides</h2>
<iframe src="https://tidy-survey-r.github.io/site/talks/talk-rladies-ams-rtp.html#/title-slide" height="415" width="800">
</iframe>
</section>
<section id="recording" class="level2">
<h2 class="anchored" data-anchor-id="recording">Recording</h2>
<p><iframe width="800" height="450" src="https://www.youtube.com/embed/ip78qoxoZGc?si=VOyMO3oDvUnd3KDA" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen=""></iframe></p>


</section>

 ]]></description>
  <guid>https://ivelasq.rbind.io/talk/tidy-data-weighted-analysis/</guid>
  <pubDate>Tue, 25 Feb 2025 00:00:00 GMT</pubDate>
  <media:content url="https://ivelasq.rbind.io/talk/tidy-data-weighted-analysis/thumbnail.jpeg" medium="image" type="image/jpeg"/>
</item>
<item>
  <title>Interactive R, Python, and Shiny in the Browser with Quarto and Shinylive</title>
  <dc:creator>Isabella Velásquez</dc:creator>
  <link>https://ivelasq.rbind.io/talk/interactive-r-python-in-browser/</link>
  <description><![CDATA[ 




<a href="https://www.meetup.com/rladies-rome/events/305741912/" class="btn btn-secondary">
  <i class="bi bi-calendar-event"></i>&nbsp;&nbsp;Event
</a>

<a href="https://ivelasq.github.io/2025-02-21_r-python-shiny-in-the-browser/" class="btn btn-secondary" target="_blank" rel="noopener noreferrer">
  <i class="bi bi-tv"></i>&nbsp;&nbsp;Slides
</a>

<a href="https://github.com/ivelasq/2025-02-21_r-python-shiny-in-the-browser" class="btn btn-secondary" target="_blank" rel="noopener noreferrer">
  <i class="bi bi-github"></i>&nbsp;&nbsp;Repo
</a>

<a href="https://www.youtube.com/watch?v=59DSo_jjTpI" class="btn btn-secondary" target="_blank" rel="noopener noreferrer">
  <i class="bi bi-youtube"></i>&nbsp;&nbsp;Recording
</a>
<p><br></p>
<section id="details" class="level2">
<h2 class="anchored" data-anchor-id="details">Details</h2>
<ul style="list-style-type: none; padding-left: 0;">
<li>
🏛️ <a href="https://www.meetup.com/rladies-rome/events/305741912/">R-Ladies Rome</a>
</li>
<li>
📆 21 February 2025 // 11:00 AM CT
</li>
<li>
💻️ Virtual
</li>
</ul>
</section>
<section id="description" class="level2">
<h2 class="anchored" data-anchor-id="description">Description</h2>
<p>Discover new ways to share R, Python, and Shiny projects using Quarto Live and Shinylive, no server required!</p>
<p>These tools bring R, Python, and Shiny applications to life directly in the browser. Your audience can open a web page and instantly run code or interact with Shiny apps without needing any setup.</p>
<p>Quarto Live allows you to embed interactive code blocks, exercises with hints and solutions, and dynamic visualizations within static HTML documents. Powered by WebAssembly, it brings interactivity to your Quarto documents.</p>
<p>Shinylive transforms Shiny apps into fully browser-based experiences.</p>
<p>In this talk, you’ll learn how to use these tools to create engaging, interactive documents, dashboards, and educational content that anyone can access, even if they do not have R or Python installed. I look forward to seeing you there!</p>
</section>
<section id="slides" class="level2">
<h2 class="anchored" data-anchor-id="slides">Slides</h2>
<iframe src="https://ivelasq.github.io/2025-02-21_r-python-shiny-in-the-browser/" height="415" width="800">
</iframe>
</section>
<section id="recording" class="level2">
<h2 class="anchored" data-anchor-id="recording">Recording</h2>
<p><iframe width="800" height="450" src="https://www.youtube.com/embed/59DSo_jjTpI?si=_v5t4Ebk1IUfscrM" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen=""></iframe></p>


</section>

 ]]></description>
  <guid>https://ivelasq.rbind.io/talk/interactive-r-python-in-browser/</guid>
  <pubDate>Fri, 21 Feb 2025 00:00:00 GMT</pubDate>
  <media:content url="https://ivelasq.rbind.io/talk/interactive-r-python-in-browser/thumbnail.jpeg" medium="image" type="image/jpeg"/>
</item>
<item>
  <title>From Notebooks to Dashboards with Quarto</title>
  <dc:creator>Isabella Velásquez</dc:creator>
  <dc:creator>Sara Altman</dc:creator>
  <link>https://ivelasq.rbind.io/talk/smalldatasf-quarto-workshop/</link>
  <description><![CDATA[ 




<a href="https://www.smalldatasf.com/2024/" class="btn btn-secondary">
  <i class="bi bi-calendar-event"></i>&nbsp;&nbsp;Event
</a>

<a href="https://pos.it/smalldatasf-quarto-workshop" class="btn btn-secondary" target="_blank" rel="noopener noreferrer">
  <i class="bi bi-link-45deg"></i>&nbsp;&nbsp;Website
</a>

<a href="https://github.com/posit-dev/smalldatasf-quarto-workshop" class="btn btn-secondary" target="_blank" rel="noopener noreferrer">
  <i class="bi bi-github"></i>&nbsp;&nbsp;Repo
</a>
    
<a href="https://github.com/posit-dev/smalldatasf-quarto-exercises" class="btn btn-secondary" target="_blank" rel="noopener noreferrer">
  <i class="bi bi-card-checklist"></i>&nbsp;&nbsp;Exercises
</a>
<p><br></p>
<section id="details" class="level2">
<h2 class="anchored" data-anchor-id="details">Details</h2>
<ul style="list-style-type: none; padding-left: 0;">
<li>
👥 <a href="https://www.smalldatasf.com/2024/">Small Data SF 2024</a>
</li>
<li>
📆 23 September 2024 // 1:00 PM PT
</li>
<li>
🌉️ San Francisco, CA
</li>
</ul>
</section>
<section id="description" class="level2">
<h2 class="anchored" data-anchor-id="description">Description</h2>
<p>Quarto is an innovative, open-source publishing system from Posit that transforms Jupyter Notebooks and plain markdown into polished, professional outputs. This workshop will show how Quarto helps data scientists create high-quality, shareable dashboards with static and interactive features following an accessible and reproducible workflow.</p>
</section>
<section id="website" class="level2">
<h2 class="anchored" data-anchor-id="website"><a href="https://posit-dev.github.io/smalldatasf-quarto-workshop/" target="_blank">Website</a></h2>
<iframe src="https://posit-dev.github.io/smalldatasf-quarto-workshop/" width="800" height="1550">
</iframe>


</section>

 ]]></description>
  <guid>https://ivelasq.rbind.io/talk/smalldatasf-quarto-workshop/</guid>
  <pubDate>Mon, 23 Sep 2024 00:00:00 GMT</pubDate>
  <media:content url="https://ivelasq.rbind.io/talk/smalldatasf-quarto-workshop/thumbnail.jpeg" medium="image" type="image/jpeg"/>
</item>
<item>
  <title>Using pins for Shiny with ever-changing data</title>
  <dc:creator>Isabella Velásquez</dc:creator>
  <link>https://ivelasq.rbind.io/talk/ever-changing-shiny/</link>
  <description><![CDATA[ 




<a href="https://www.meetup.com/posit-enterprise-community-meetup/events/299970474" class="btn btn-secondary">
  <i class="bi bi-calendar-event"></i>&nbsp;&nbsp;Event
</a>

<a href="https://0191902f-f29f-7d83-3606-3d3a013e33d5.share.connect.posit.cloud/#/title-slide" class="btn btn-secondary" target="_blank" rel="noopener noreferrer">
  <i class="bi bi-tv"></i>&nbsp;&nbsp;Slides
</a>

<a href="https://github.com/posit-marketing/shiny-calendar" class="btn btn-secondary" target="_blank" rel="noopener noreferrer">
  <i class="bi bi-github"></i>&nbsp;&nbsp;Repo
</a>

<a href="https://www.youtube.com/watch?v=u2OK8IWJWhk" class="btn btn-secondary" target="_blank" rel="noopener noreferrer">
  <i class="bi bi-youtube"></i>&nbsp;&nbsp;Recording
</a>  
<p><br></p>
<section id="details" class="level2">
<h2 class="anchored" data-anchor-id="details">Details</h2>
<ul style="list-style-type: none; padding-left: 0;">
<li>
👥 <a href="https://www.meetup.com/posit-enterprise-community-meetup/events/299970474">RStudio Enterprise Community Meetup</a>
</li>
<li>
📆 28 August 2024 // 11:00 AM CT
</li>
<li>
💻️ Virtual
</li>
</ul>
</section>
<section id="description" class="level2">
<h2 class="anchored" data-anchor-id="description">Description</h2>
<p>Do you manage constantly changing data and need your Shiny app to automatically update?</p>
<p>On August 28th at 11 am ET, Isabella Velásquez demonstrated a streamlined workflow for handling frequently updated datasets in Shiny. You’ll see how to simplify your process for keeping dynamic data current and how to reflect those changes in your app or dashboard.</p>
</section>
<section id="slides" class="level2">
<h2 class="anchored" data-anchor-id="slides">Slides</h2>
<iframe src="https://0191902f-f29f-7d83-3606-3d3a013e33d5.share.connect.posit.cloud/#/title-slide" height="415" width="800">
</iframe>
</section>
<section id="recording" class="level2">
<h2 class="anchored" data-anchor-id="recording">Recording</h2>
<p><iframe width="800" height="450" src="https://www.youtube.com/embed/u2OK8IWJWhk?si=vogdpAKFZzUgGTNE" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen=""></iframe></p>


</section>

 ]]></description>
  <guid>https://ivelasq.rbind.io/talk/ever-changing-shiny/</guid>
  <pubDate>Wed, 28 Aug 2024 00:00:00 GMT</pubDate>
  <media:content url="https://ivelasq.rbind.io/talk/ever-changing-shiny/thumbnail.jpeg" medium="image" type="image/jpeg"/>
</item>
<item>
  <title>Quarto Dashboards</title>
  <dc:creator>Isabella Velásquez</dc:creator>
  <link>https://ivelasq.rbind.io/talk/quarto-dashboards/</link>
  <description><![CDATA[ 




<a href="https://www.meetup.com/rladies-rome/events/302078218/" class="btn btn-secondary">
  <i class="bi bi-calendar-event"></i>&nbsp;&nbsp;Event
</a>

<a href="https://0190c2c9-dd44-d440-0f97-f3b3bf073d0f.share.connect.posit.cloud/#/title-slide" class="btn btn-secondary" target="_blank" rel="noopener noreferrer">
  <i class="bi bi-tv"></i>&nbsp;&nbsp;Slides
</a>

<a href="https://github.com/ivelasq/2024-07-18_quarto-dashboards" class="btn btn-secondary" target="_blank" rel="noopener noreferrer">
  <i class="bi bi-github"></i>&nbsp;&nbsp;Repo
</a>

<a href="https://www.youtube.com/watch?v=Kq1hgg2NtE4" class="btn btn-secondary" target="_blank" rel="noopener noreferrer">
  <i class="bi bi-youtube"></i>&nbsp;&nbsp;Recording
</a>
<p><br></p>
<section id="details" class="level2">
<h2 class="anchored" data-anchor-id="details">Details</h2>
<ul style="list-style-type: none; padding-left: 0;">
<li>
👥 <a href="https://www.meetup.com/rladies-rome/events/302078218/">R-Ladies Rome</a>
</li>
<li>
📆 18 July 2024 // 11:00 AM CT
</li>
<li>
💻️ Virtual
</li>
</ul>
</section>
<section id="description" class="level2">
<h2 class="anchored" data-anchor-id="description">Description</h2>
<p>In this workshop, you’ll dive into the world of Quarto, exploring how to create dynamic and interactive dashboards for data visualization. Whether you’re a beginner or seasoned developer, this session promises to enhance your skills and empower you with practical knowledge.</p>
</section>
<section id="slides" class="level2">
<h2 class="anchored" data-anchor-id="slides">Slides</h2>
<iframe src="https://0190c2c9-dd44-d440-0f97-f3b3bf073d0f.share.connect.posit.cloud/#/title-slide" height="415" width="800">
</iframe>
</section>
<section id="recording" class="level2">
<h2 class="anchored" data-anchor-id="recording">Recording</h2>
<iframe width="800" height="415" src="https://www.youtube.com/embed/Kq1hgg2NtE4?si=PQ9R4SrVHrH14Djq" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen="">
</iframe>


</section>

 ]]></description>
  <guid>https://ivelasq.rbind.io/talk/quarto-dashboards/</guid>
  <pubDate>Thu, 18 Jul 2024 00:00:00 GMT</pubDate>
  <media:content url="https://ivelasq.rbind.io/talk/quarto-dashboards/thumbnail.jpeg" medium="image" type="image/jpeg"/>
</item>
<item>
  <title>Automating your reporting with Quarto Dashboards and Posit Connect</title>
  <dc:creator>Isabella Velásquez</dc:creator>
  <link>https://ivelasq.rbind.io/talk/automated-quarto-dashboards/</link>
  <description><![CDATA[ 




<a href="https://www.meetup.com/posit-enterprise-community-meetup/events/299970474" class="btn btn-secondary">
  <i class="bi bi-calendar-event"></i>&nbsp;&nbsp;Event
</a>

<a href="https://colorado.posit.co/rsc/inflation-explorer-slides/" class="btn btn-secondary" target="_blank" rel="noopener noreferrer">
  <i class="bi bi-tv"></i>&nbsp;&nbsp;Slides
</a>

<a href="https://github.com/posit-marketing/inflation-explorer" class="btn btn-secondary" target="_blank" rel="noopener noreferrer">
  <i class="bi bi-github"></i>&nbsp;&nbsp;Repo
</a>

<a href="https://www.youtube.com/watch?v=xnJuXOw7iu8" class="btn btn-secondary" target="_blank" rel="noopener noreferrer">
  <i class="bi bi-youtube"></i>&nbsp;&nbsp;Recording
</a>  
<p><br></p>
<section id="details" class="level2">
<h2 class="anchored" data-anchor-id="details">Details</h2>
<ul style="list-style-type: none; padding-left: 0;">
<li>
👥 <a href="https://www.meetup.com/posit-enterprise-community-meetup/events/299970474">End-to-End Workflow With Posit Team</a>
</li>
<li>
📆 29 May 2024 // 11:00 AM ET
</li>
<li>
💻️ Virtual
</li>
</ul>
</section>
<section id="description" class="level2">
<h2 class="anchored" data-anchor-id="description">Description</h2>
<p>Get ready to up your reporting game!</p>
<p>Isabella Velásquez dives into the practical side of lightweight dashboards made with Quarto, the next-generation R Markdown, and Posit Connect, our premier publishing platform.</p>
<p>You’ll learn how to build and automate Quarto Dashboards with Posit Connect. We’ll showcase a Python example, but the same principles apply to R, Julia, and Observable.</p>
</section>
<section id="recording" class="level2">
<h2 class="anchored" data-anchor-id="recording">Recording</h2>
<iframe width="800" height="415" src="https://www.youtube.com/embed/xnJuXOw7iu8?si=fRB0Xvid3IaP81_u" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen="">
</iframe>


</section>

 ]]></description>
  <guid>https://ivelasq.rbind.io/talk/automated-quarto-dashboards/</guid>
  <pubDate>Wed, 29 May 2024 00:00:00 GMT</pubDate>
  <media:content url="https://ivelasq.rbind.io/talk/automated-quarto-dashboards/thumbnail.jpeg" medium="image" type="image/jpeg"/>
</item>
<item>
  <title>Getting Started With Report Writing Using Quarto</title>
  <dc:creator>Isabella Velásquez</dc:creator>
  <link>https://ivelasq.rbind.io/talk/getting-started-with-report-writing-using-quarto/</link>
  <description><![CDATA[ 




<a href="https://www.meetup.com/rladies-nairobi/events/298652674/" class="btn btn-secondary">
  <i class="bi bi-calendar-event"></i>&nbsp;&nbsp;Event
</a>

<a href="https://ivelasq.quarto.pub/getting-started-with-report-writing-using-quarto/" class="btn btn-secondary" target="_blank" rel="noopener noreferrer">
  <i class="bi bi-tv"></i>&nbsp;&nbsp;Slides
</a>

<a href="https://github.com/ivelasq/2024-01-23_getting-started-with-report-writing-using-quarto" class="btn btn-secondary" target="_blank" rel="noopener noreferrer">
  <i class="bi bi-github"></i>&nbsp;&nbsp;Repo
</a>

<a href="https://www.youtube.com/watch?v=vtJuo9YmlPk" class="btn btn-secondary" target="_blank" rel="noopener noreferrer">
  <i class="bi bi-youtube"></i>&nbsp;&nbsp;Recording Part 1
</a>  

<a href="https://www.youtube.com/watch?v=Sf__ERCSgIA" class="btn btn-secondary" target="_blank" rel="noopener noreferrer">
  <i class="bi bi-youtube"></i>&nbsp;&nbsp;Recording Part 2
</a>  
<p><br></p>
<section id="details" class="level2">
<h2 class="anchored" data-anchor-id="details">Details</h2>
<ul style="list-style-type: none; padding-left: 0;">
<li>
👥 <a href="https://www.meetup.com/rladies-nairobi/events/298652674/">R-Ladies Nairobi Meetup</a>
</li>
<li>
📆 23 January 2024 // 9:00 AM PT
</li>
<li>
💻️ Virtual
</li>
</ul>
</section>
<section id="slides" class="level2">
<h2 class="anchored" data-anchor-id="slides">Slides</h2>
<iframe src="https://ivelasq.quarto.pub/getting-started-with-report-writing-using-quarto/" height="415" width="800">
</iframe>
</section>
<section id="recordings" class="level2">
<h2 class="anchored" data-anchor-id="recordings">Recordings</h2>
<p>Part 1:</p>
<iframe width="800" height="450" src="https://www.youtube.com/embed/vtJuo9YmlPk?si=rJolY5-Bhnh6Lpe2" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen="">
</iframe>
<p>Part 2:</p>
<iframe width="800" height="450" src="https://www.youtube.com/embed/Sf__ERCSgIA?si=0kg4PQJwPtkP6IoD" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen="">
</iframe>


</section>

 ]]></description>
  <guid>https://ivelasq.rbind.io/talk/getting-started-with-report-writing-using-quarto/</guid>
  <pubDate>Tue, 23 Jan 2024 00:00:00 GMT</pubDate>
  <media:content url="https://ivelasq.rbind.io/talk/getting-started-with-report-writing-using-quarto/thumbnail.jpeg" medium="image" type="image/jpeg"/>
</item>
<item>
  <title>The Medium is the Message: R Programmers as Content Creators</title>
  <dc:creator>Isabella Velásquez</dc:creator>
  <link>https://ivelasq.rbind.io/talk/you-r-a-content-creator/</link>
  <description><![CDATA[ 




<a href="https://cascadiarconf.com/" class="btn btn-secondary">
  <i class="bi bi-calendar-event"></i>&nbsp;&nbsp;Event
</a>

<a href="https://ivelasq.quarto.pub/you-r-a-content-creator/" class="btn btn-secondary" target="_blank" rel="noopener noreferrer">
  <i class="bi bi-tv"></i>&nbsp;&nbsp;Slides
</a>

<a href="https://github.com/ivelasq/you-r-a-content-creator/" class="btn btn-secondary" target="_blank" rel="noopener noreferrer">
  <i class="bi bi-github"></i>&nbsp;&nbsp;Repo
</a>
<p><br></p>
<section id="details" class="level2">
<h2 class="anchored" data-anchor-id="details">Details</h2>
<ul style="list-style-type: none; padding-left: 0;">
<li>
👥 <a href="https://cascadiarconf.com/">Cascadia R Conference 2023</a>
</li>
<li>
📆 19 August 2023 // 9:15 AM PT
</li>
<li>
🌲️ Seattle, WA
</li>
</ul>
</section>
<section id="slides" class="level2">
<h2 class="anchored" data-anchor-id="slides">Slides</h2>
<iframe src="https://ivelasq.quarto.pub/you-r-a-content-creator/" height="415" width="800">
</iframe>
</section>
<section id="script" class="level2">
<h2 class="anchored" data-anchor-id="script">Script</h2>
<p>Slide 1</p>
<p>How many of us have seen this diagram before? As R programmers, the topic of data wrangling is probably not new. We know that data can be inherently valuable, but can be complex and overwhelming in its raw form. We know our role is to take these data and transform them into something that others can consume. And our job doesn’t end there - we also need to actually communicate findings or model results or crosstabs or whatever we actually did with the data.</p>
<p>Slide 2</p>
<p>These were my primary responsibilities at my previous job as a data analyst. I worked with publicly available data such as government databases or online repositories, sometimes interacting with them through APIs. I had to download, organize, and maintain datasets from these multiple sources. Sometimes, I would run into issues like limitations with the data or unexpected formats. Once I had it processed and cleaned, then it was time to present my findings. Great.</p>
<p>Slide 3</p>
<p>When I first started, I would share my findings with my manager. She preferred using PowerPoint decks. These decks had headings summarizing the data’s main points and a big visualization with annotations. She’d ask for these decks through email and then set up one-on-one discussions with me. During these meetings, we’d cover how I organized the data, any insights, the main takeaways, and any important details she needed to know when using the deck.</p>
<table>
<tbody><tr>
<td>
Audience
</td>
<td>
Medium
</td>
<td>
Channel
</td>
</tr>
<tr>
<td>
Manager
</td>
<td>
PowerPoint decks
</td>
<td>
Email/one-on-one discussions
</td>
</tr>
</tbody></table>
<p>Slide 4</p>
<p>But then, as we became more familiar, my manager asked me to email the directors and deputies directly. The directors and deputies were enthusiastic about exploring the data themselves. They wanted to make their own tables and summaries and derive their own insights. So, while they liked the PowerPoint slides, they often wanted the raw data in the form of Excel sheets. I began attaching these sheets to emails and arranging meetings to discuss what they were interested in so we could do the analysis together.</p>
<table>
<tbody><tr>
<td>
Audience
</td>
<td>
Medium
</td>
<td>
Channel
</td>
</tr>
<tr>
<td>
Manager/Deputy/DDs
</td>
<td>
PowerPoint decks
</td>
<td>
Email/one-on-one discussions
</td>
</tr>
<tr>
<td>
Deputy/DDs
</td>
<td>
Excel spreadsheets
</td>
<td>
Email/data workshops
</td>
</tr>
</tbody></table>
<p>Slide 5</p>
<p>But I also had teammates who needed to access and edit my code. They preferred downloading everything at once. And then they would run their analysis, reproducing or expanding on what I had created. So, we used GitHub, a platform for sharing and collaborating with code. They could clone a project and get everything on their computer to work with. And in order for me to document what they needed to know, we started a Wiki with information on the data, the analysis, and reproducibility steps.</p>
<table>
<tbody><tr>
<td>
Audience
</td>
<td>
Medium
</td>
<td>
Channel
</td>
</tr>
<tr>
<td>
Manager/Deputy/DDs
</td>
<td>
PowerPoint decks
</td>
<td>
Email/one-on-one discussions
</td>
</tr>
<tr>
<td>
Deputy/DDs
</td>
<td>
Excel spreadsheets
</td>
<td>
Email/data workshops
</td>
</tr>
<tr>
<td>
Analysts
</td>
<td>
Code/data/output
</td>
<td>
GitHub/Wiki
</td>
</tr>
</tbody></table>
<p>Slide 6</p>
<p>But I also had colleagues curious about our analyses. We began sending email newsletters with links to the slide decks so they could also access and see what we were working on, and decide whether they were interested in perusing the deck.</p>
<table>
<tbody><tr>
<td>
Audience
</td>
<td>
Medium
</td>
<td>
Channel
</td>
</tr>
<tr>
<td>
Manager/Deputy/DDs
</td>
<td>
PowerPoint decks
</td>
<td>
Email/one-on-one discussions
</td>
</tr>
<tr>
<td>
Deputy/DDs
</td>
<td>
Excel spreadsheets
</td>
<td>
Email/data workshops
</td>
</tr>
<tr>
<td>
Analysts
</td>
<td>
Code/data/output
</td>
<td>
GitHub
</td>
</tr>
<tr>
<td>
Colleagues
</td>
<td>
PowerPoint decks
</td>
<td>
Email newsletters
</td>
</tr>
</tbody></table>
<p>Slide 7</p>
<p>These colleagues liked the slide decks but wanted reports tailored to their needs. I used R Markdown to make parameterized reports for different regions or demographics they cared about. These reports would have a heading, bullet points with key takeaways, then some narrative around the data being shared, and then crosstabs or tables specific to each group. Then, I shared these reports through an internal website made with blogdown. I made sure the website was user-friendly, so my colleagues could easily find the reports they needed, along with extra information about the data.</p>
<table>
<tbody><tr>
<td>
Audience
</td>
<td>
Medium
</td>
<td>
Channel
</td>
</tr>
<tr>
<td>
Manager/Deputy/DDs
</td>
<td>
PowerPoint deck
</td>
<td>
Email
</td>
</tr>
<tr>
<td>
Deputy/DDs
</td>
<td>
PowerPoint deck/CSVs
</td>
<td>
Email
</td>
</tr>
<tr>
<td>
Analysts
</td>
<td>
Code/notebooks/CSVs/output
</td>
<td>
GitHub
</td>
</tr>
<tr>
<td>
Colleagues
</td>
<td>
PowerPoint deck
</td>
<td>
Email newsletters
</td>
</tr>
<tr>
<td>
Colleagues
</td>
<td>
Parameterized Word reports
</td>
<td>
Internal website made with blogdown
</td>
</tr>
</tbody></table>
<p>Slide 8</p>
<p>But some colleagues didn’t want to click through many reports to compare different subgroups. They needed something quicker to switch between and regular reports didn’t cut it. Instead, for them, I made Shiny apps and created short videos to help them use and understand the dashboards.</p>
<table>
<tbody><tr>
<td>
Audience
</td>
<td>
Medium
</td>
<td>
Channel
</td>
</tr>
<tr>
<td>
Manager/Deputy/DDs
</td>
<td>
PowerPoint deck
</td>
<td>
Email
</td>
</tr>
<tr>
<td>
Deputy/DDs
</td>
<td>
PowerPoint deck/CSVs
</td>
<td>
Email
</td>
</tr>
<tr>
<td>
Analysts
</td>
<td>
Code/notebooks/CSVs/output
</td>
<td>
GitHub
</td>
</tr>
<tr>
<td>
Colleagues
</td>
<td>
PowerPoint deck
</td>
<td>
Email newsletters
</td>
</tr>
<tr>
<td>
Colleagues
</td>
<td>
Parameterized Word reports
</td>
<td>
Internal repository
</td>
</tr>
<tr>
<td>
Other colleagues
</td>
<td>
Shiny apps/video tutorials
</td>
<td>
Internal repository
</td>
</tr>
</tbody></table>
<p>Slide 9</p>
<p>Others from different teams joined the newsletter and used the internal repository. The communications team contacted me to write blog posts and create infographics to share externally. But they didn’t want to share the regular reports I had with colleagues. They asked for blog posts that told a story, with lots of pictures and visuals, to interest a bigger audience. These would go on the company blog and social media.</p>
<table>
<tbody><tr>
<td>
Audience
</td>
<td>
Medium
</td>
<td>
Channel
</td>
</tr>
<tr>
<td>
Manager/Deputy/DDs
</td>
<td>
PowerPoint deck
</td>
<td>
Email
</td>
</tr>
<tr>
<td>
Deputy/DDs
</td>
<td>
PowerPoint deck/CSVs
</td>
<td>
Email
</td>
</tr>
<tr>
<td>
Analysts
</td>
<td>
Code/notebooks/CSVs/output
</td>
<td>
GitHub
</td>
</tr>
<tr>
<td>
Colleagues
</td>
<td>
PowerPoint deck
</td>
<td>
Email newsletters
</td>
</tr>
<tr>
<td>
Colleagues
</td>
<td>
Parameterized Word reports
</td>
<td>
Internal repository
</td>
</tr>
<tr>
<td>
Other colleagues
</td>
<td>
Shiny apps/video tutorials
</td>
<td>
Internal repository
</td>
</tr>
<tr>
<td>
External interested parties
</td>
<td>
Blog posts and infographics
</td>
<td>
Company blog/social media
</td>
</tr>
</tbody></table>
<p>Slide 10</p>
<p>While my main focus was data analysis for internal use, I wanted to share what I was learning in R, like code snippets and workflow recommendations. Since this was more general, I was able to share it on my personal accounts. So, I began writing on my personal blog and sharing social media posts to share my insights.</p>
<table>
<tbody><tr>
<td>
Audience
</td>
<td>
Medium
</td>
<td>
Channel
</td>
</tr>
<tr>
<td>
Manager/Deputy/DDs
</td>
<td>
PowerPoint deck
</td>
<td>
Email
</td>
</tr>
<tr>
<td>
Deputy/DDs
</td>
<td>
PowerPoint deck/CSVs
</td>
<td>
Email
</td>
</tr>
<tr>
<td>
Analysts
</td>
<td>
Code/notebooks/CSVs/output
</td>
<td>
GitHub
</td>
</tr>
<tr>
<td>
Colleagues
</td>
<td>
PowerPoint deck
</td>
<td>
Email newsletters
</td>
</tr>
<tr>
<td>
Colleagues
</td>
<td>
Reports
</td>
<td>
Internal website
</td>
</tr>
<tr>
<td>
External interested parties
</td>
<td>
Text and infographics
</td>
<td>
Company blog/social media
</td>
</tr>
<tr>
<td>
External R programmers
</td>
<td>
Blog posts with narrative and code
</td>
<td>
</td>
</tr>
</tbody></table>
<p>And essentially, for each analysis I did, I considered all these audiences, activities, and channels and decided which ones I would take on and how. I was a data analyst for five years, and after a while, I reflected on my role and tasks, all the analyses I had done, along with everything I shared, and how all these activities were received, and the decisions that were made based on what I had created. And then I thought…</p>
<p>Slide 11</p>
<p>Am I an influencer?!</p>
<p>That is a bit of a joke, but really, it underlies what I wanted to talk about today. Sometimes we say we’re going to create a slide deck or dashboard as if those two things were interchangeable to the people receiving them. But one thing that I realized over time is that they are not.</p>
<p>Slide 12</p>
<ol type="1">
<li>Medium Matters: First, it really matters to the audience whether we are sending them a slide deck or a report or a dashboard or a spreadsheet. The medium we use influences how the message is perceived and understood.</li>
<li>Tailoring Communication: Different audiences have different preferences and needs. Adapting our communication style to suit the audience’s preferences can enhance the impact of our insights and findings. And it wasn’t just their personal preference, but sometimes specific contexts required one format or another.</li>
<li>Medium Shapes Visibility: The medium we choose has a direct impact on whether our work gets noticed at all.</li>
</ol>
<p>Slide 13</p>
<p>Ever heard the phrase ‘The Medium is the Message’? This concept, coined by Marshall McLuhan, suggests that the medium used to convey information is just as important as the information itself. In essence, how you communicate shapes how your message is perceived. Whether you are using a dashboard, or a report, or a CSV, each has its own unique characteristics with different effects on people. At first, this concept might seem vague. But I can honestly say that understanding the meaning behind these words changed the way I approach data analysis; not just from a technical or procedural standpoint, but from a mental perspective on how R programmers should approach and design for an audience.</p>
<p>Slide 14</p>
<p>So, today, I’m here to delve deeper into the ‘communicate’ phase of the data wrangling workflow. This encompasses understanding the audience, selecting the right medium, choosing appropriate channels, and incorporating special features for effective communication. Or, in other words, content creation.</p>
<p>Slide 15</p>
<p>To define content, at its most basic level, it includes:</p>
<ul>
<li>The information and/or experience</li>
<li>The medium/channel in which the information is delivered</li>
<li>Any beneficial features the medium adds to the information or experience</li>
</ul>
<p>Slide 16</p>
<p>What exactly is a content creator? Through my extensive Google research, one definition is ‘A content creator is someone who crafts informative or engaging material to be communicated through diverse mediums or channels.’ In other words, every one of us! For R programmers, content creation involves shaping data insights and findings into compelling formats. This can include creating newsletters, emails, wikis, articles, reports, and more, all with the goal of connecting and resonating with the intended audience. Content itself encompasses a range of experiences, including workshops and webinars, to deliver information to end users. In the context of business, content becomes vital as it’s the substance from which users derive value.</p>
<p>Slide 17</p>
<p>One of my esteemed colleagues, Joseph Rickert, kindly pointed out that ‘content’ is a marketing term, and honestly, before my current role as a Sr.&nbsp;Product Marketing Manager, I never thought of my work as content creation. Traditionally, content creation is closely associated with marketing teams, strategically employed to boost sales and revenue by engaging external audiences to do things like visit your website, call your sales team, etc.</p>
<p>However, the principles of content creation hold significant value even within internal contexts. For R programmers predominantly working within an organization, content creation becomes a powerful tool for collaboration, understanding, and decision-making. By tailoring content to different teams and departments, we can ensure that our analyses resonate effectively. The goal of a content creator is to attract, engage, and delight - add value at every stage and build trust, credibility, and momentum. As people working with data, these are our goals as well.</p>
<p>Slide 18</p>
<p>The content that you create is important, of course. But the way you deliver the content is part of the whole - you need to champion knowledge through your content. And the way you do this is by understanding your audience.</p>
<p>Slide 19</p>
<p>A few months ago, I gave a talk to R-Ladies St.&nbsp;Louis called Intro to Quarto. Quarto is an open-source tool for creating documents using literate programming, or a mix of code and narrative. You can use Quarto to output to Word, PDFs, HTML, etc. from one source.</p>
<p>Consider walking through how to create a Quarto document by talking through some slides. (here I’d walk through creating a Quarto document with some slides)</p>
<p>Or, consider what it would be like to watch a live demo of creating a Quarto document. (here I’d walk through creating a Quarto document with a live demo)</p>
<p>Or, consider what it would mean to be given a Posit Cloud project where you can create your first Quarto document. (here I point to a Posit Cloud project)</p>
<p>Each of these are viable and effective ways of introducing Quarto to an interested group. When I was coming up with the talk, I thought about:</p>
<ul>
<li>Level of Engagement: Tailor the level of engagement to match your audience’s preferences. Are they looking for a high-level overview or a deep dive into technical details? This might inform whether you would just send them an email with top-level takeaways or schedule a time to wade in the data together. This would be an online webinar that ran an hour. Therefore, there would be enough time to go into the concepts of Quarto and specific details on how it works.</li>
<li>Interactivity: Assess how interactive your content should be. Some audiences might prefer interactive tools like dashboards to explore data themselves, while others might prefer static visualizations that present the information clearly without requiring interaction. Since it was online, I wouldn’t be able to guide people individually and troubleshoot with them one-on-one. Therefore, I elected to instead give the deep dive and provide options for interactive use for after the webinar.</li>
<li>Intended Depth of Understanding: Gauge how deep your audience wants to delve into the subject matter. Determine whether they’re seeking a broad understanding of key insights or a detailed understanding of the methodology and data. This guides us in deciding whether to provide high-level summaries or comprehensive explanations. I wanted attendees to leave the webinar ready to create a Quarto document. Therefore, I needed to give them enough information such that they left confident in next steps to try without my help.</li>
</ul>
<p>“The medium is the message” because it is the “medium that shapes and controls the scale and form of human association and action.” Because the media are inherently different, we experience the content in entirely different ways.</p>
<p>Slide 20</p>
<p>And as R users, we are better suited than most for content creation because of the tools we have.</p>
<p>Tools for creation</p>
<ul>
<li>R Markdown/Quarto documents that can be exported to Word, PDFs, HTML</li>
<li>R Markdown/Quarto projects for websites, books, blogs, presentations</li>
<li>The {officer} package lets R users manipulate Word and PowerPoint documents</li>
<li>Shiny apps that make our R scripts into dashboards</li>
<li>{ggplot2} for beautiful visualizations</li>
<li>{writexl} for writing to Excel</li>
</ul>
<p>Slide 12</p>
<p>Hopefully, I have convinced you that yes, R programmers can be content creators. So, how can we be effective content creators?</p>
<ul>
<li><ol type="1">
<li>Roadmap: Every piece of content you create should be viewed as a valuable addition to a growing library of insights. Imagine your team becoming the go-to source for data-driven information that supports multiple teams across the organization. By developing a content roadmap, you’re not just creating standalone pieces; you’re building a resource that contributes to the long-term knowledge base of your organization.</li>
</ol></li>
<li><ol start="2" type="1">
<li>Before you start crafting new content, take a moment to assess what you already have. This not only saves you hours of needless work but also helps you identify gaps and opportunities.</li>
</ol></li>
<li><ol start="3" type="1">
<li>Effective content creation requires clear goals. Using the SMART framework—Specific, Measurable, Achievable, Relevant, and Time-bound—ensures that your goals are well-defined and achievable.</li>
</ol></li>
<li><ol start="4" type="1">
<li>Content is most effective when it’s tailored to your audience. Identify the personas or groups within your organization that benefit from your content. Understand how and when they consume information.</li>
</ol></li>
<li><ol start="5" type="1">
<li>It’s essential to measure the effectiveness of your content. Analyze metrics such as engagement rates, views, shares, and comments. This data provides valuable insights into what’s resonating with your audience and what might need adjustment. Continuous analysis allows you to refine your content strategy over time.</li>
</ol></li>
<li><ol start="6" type="1">
<li>Creating content is just the first step. To maximize its impact, you need to promote it effectively. Share your content across appropriate channels and engage with your audience. Additionally, identify ‘influencers’ within your organization who can help amplify your message. Building partnerships with those who hold influence can significantly increase the reach of your insights.</li>
</ol></li>
<li><ol start="7" type="1">
<li>Feedback is a goldmine of insights. Encourage your audience to provide feedback on your content—what they found valuable, what could be improved, and what topics they’d like to see covered. This input helps you iterate and enhance your content, ensuring that it consistently meets the needs and expectations of your audience.</li>
</ol></li>
<li><ol start="8" type="1">
<li>And finally, remember to have fun! Content creation isn’t just about conveying information; it’s an opportunity to engage, inspire, and connect with your audience. Embrace your creativity, experiment with different formats, and enjoy the process of crafting meaningful content. When you’re passionate about what you’re creating, it shines through in your work and resonates with your audience. So, have fun with your content creation journey, and let your enthusiasm drive the impact of your insights!</li>
</ol></li>
</ul>
<p>Slide 22</p>
<p>As R programmers and content creators, we bear another significant responsibility—creating and sharing intellectual property. This responsibility goes beyond the initial presentation of our work. It delves into the realms of reproducibility and maintenance. If we don’t ensure that our creations can be reproduced and sustained, the value they hold can easily be lost over time. This concept echoes the essence of our discussion today: how the medium we choose to convey our insights isn’t just a vessel for information; it’s a foundation for longevity and impact.</p>
<p>Slide 23</p>
<p>It’s clear that picking the right way to share is more than just a decision — it conveys something important. As you create and share, remember that the medium you choose is a vital part of your message. Take a moment to consider your audience, the level of engagement, interactivity, and depth of understanding they seek. Today, we’re about to see incredible content from creators across Cascadia. So, think about how they’re doing it: what’s the tool they’re using to show their content, and what does it say? How do these two things work together to make an impact?</p>
<p>Embrace the ‘medium is the message’ philosophy and let it guide your own content creation. Let’s all be content creators who not only share knowledge but also shape how it’s received. Thank you.</p>


</section>

 ]]></description>
  <guid>https://ivelasq.rbind.io/talk/you-r-a-content-creator/</guid>
  <pubDate>Sat, 19 Aug 2023 00:00:00 GMT</pubDate>
  <media:content url="https://ivelasq.rbind.io/talk/you-r-a-content-creator/thumbnail.jpeg" medium="image" type="image/jpeg"/>
</item>
<item>
  <title>Seven Essential Excel Data Visualization Tips (in R!)</title>
  <dc:creator>Isabella Velásquez</dc:creator>
  <link>https://ivelasq.rbind.io/talk/excel-data-viz-tips-in-r/</link>
  <description><![CDATA[ 




<a href="https://www.meetup.com/slc-rug/events/293359518" class="btn btn-secondary">
  <i class="bi bi-calendar-event"></i>&nbsp;&nbsp;Event
</a>

<a href="https://ivelasq.quarto.pub/excel-data-viz-tips-in-r/" class="btn btn-secondary" target="_blank" rel="noopener noreferrer">
  <i class="bi bi-tv"></i>&nbsp;&nbsp;Slides
</a>

<a href="https://github.com/ivelasq/excel-data-viz-tips-in-r" class="btn btn-secondary" target="_blank" rel="noopener noreferrer">
  <i class="bi bi-github"></i>&nbsp;&nbsp;Repo
</a>

<a href="https://www.youtube.com/watch?v=XEDOfUp_O7w" class="btn btn-secondary" target="_blank" rel="noopener noreferrer">
  <i class="bi bi-youtube"></i>&nbsp;&nbsp;Recording
</a>  
<p><br></p>
<section id="details" class="level2">
<h2 class="anchored" data-anchor-id="details">Details</h2>
<ul style="list-style-type: none; padding-left: 0;">
<li>
⛰️ <a href="https://www.meetup.com/slc-rug/events/293359518">Salt Lake City R User Group</a>
</li>
<li>
📆 07 June 2023 // 12:00 PM MT
</li>
<li>
💻️ Virtual
</li>
</ul>
</section>
<section id="description" class="level2">
<h2 class="anchored" data-anchor-id="description">Description</h2>
<p>Have you ever seen a nifty Excel data visualization and wondered, “Can I do that with R?” The answer is likely yes! With R, you can create stunning, customizable visuals that elevate your data analysis. In this talk, we will cover seven data visualization tips that are achievable in Excel, but also demonstrate how (and why) to create them in R. From sparklines to heat maps, if Excel can do it, R can do it too! Best of all, your work will be reproducible and repeatable, allowing you to share your code and remake your charts anytime, making your work more transparent and streamlined. Join us to learn the tools for making impactful and reproducible dataviz in R!</p>
</section>
<section id="slides" class="level2">
<h2 class="anchored" data-anchor-id="slides">Slides</h2>
<iframe src="https://ivelasq.quarto.pub/excel-data-viz-tips-in-r/" height="415" width="800">
</iframe>
</section>
<section id="recording" class="level2">
<h2 class="anchored" data-anchor-id="recording">Recording</h2>
<p><iframe width="800" height="450" src="https://www.youtube.com/embed/XEDOfUp_O7w?si=dNaESG9HhevyqRCs" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen=""></iframe></p>


</section>

 ]]></description>
  <guid>https://ivelasq.rbind.io/talk/excel-data-viz-tips-in-r/</guid>
  <pubDate>Wed, 07 Jun 2023 00:00:00 GMT</pubDate>
  <media:content url="https://ivelasq.rbind.io/talk/excel-data-viz-tips-in-r/thumbnail.png" medium="image" type="image/png"/>
</item>
</channel>
</rss>
