<p><div><div><div><div data-show-faces="false" data-height="21" data-width="100" data-layout="button_count" data-send="true" data-href="https://www.r-bloggers.com/visualizing-the-catholic-lectionary-part-1/"></div></div><div></div></div><div></div></div>
<div>
(This article was first published on <strong><a href="http://stefanavey.github.io/r/2018/10/27/visualizing-the-lectionary-part-1"> Stefan Avey - r</a></strong>, and kindly contributed to <a rel="nofollow" href="https://www.r-bloggers.com/">R-bloggers)</a> </div>
<p></p>
<h1>What’s a Lectionary?</h1>
<p>A <a rel="nofollow" href="https://en.wikipedia.org/wiki/Lectionary" target="_blank">lectionary</a>, according to Wikipedia, is a listing of scripture readings for Christian or Judaic worship on a given day. The Roman Catholic Lectionary will contain a list of readings for a specific day that are on a 3-year cycle. Here is an example:</p>
<p>Thirtieth Sunday in Ordinary Time<br>
Lectionary: 149<br>
<strong>Reading 1</strong>: Jer 31:7-9<br>
<strong>Psalm</strong>: Ps 126:1-2, 2-3, 4-5, 6<br>
<strong>Reading 2</strong>: Heb 5:1-6<br>
<strong>Gospel</strong>: Mk 10:46-52</p>
<p>As a Catholic, I’ve often wondered how much of the Bible is included in the lectionary. Fortunately, Felix Just, S.J., Ph.D. compiled a <a rel="nofollow" href="http://catholic-resources.org/Lectionary/Statistics.htm" target="_blank">website with statistics</a> on many aspects of the lectionary which help to answer this question.</p>
<p>His analysis shows that a Catholic who attends Mass on Sundays and Feasts (but not weekdays) would hear <strong>~ 4%</strong> of the Old Testament (excluding Psalms) and <strong>~ 41%</strong> of the New Testament. Wow – this was a shock to me! I bet if you ask around you’ll hear that many Catholics think the lectionary includes the whole Bible. To be fair, these numbers do get a bit higher if you include the complete lectionary (with weekdays). The total coverage of the Old Testament is <strong>~14%</strong> (again excluding Psalms) and for the New Testament it is <strong>~72%</strong>.</p>
<p>Since I’m a Data Scientist, I naturally wanted to dig into these numbers and ask more questions. The summary tables nicely show which books are covered and which are not. But what verses are actually covered? Is there something unique about those verses vs. those in the Lectionary (e.g. different sorts of themes)? In the future I plan to write another post on understanding the content via Natural Language Processing. For this post, I’ll focus on creating a single <em>visualization</em> of the lectionary coverage for Sundays and Major Feasts to help me understand what parts are covered at a glance.</p>
<h1>Ok Cool, But Isn’t the Lectionary a Book?</h1>
<p></p>
<p>Yes, the lectionary is traditionally a book. But it’s the 21<sup>st</sup> century and luckily someone else has transcribed this into an electronic listing so I didn’t have to do it. The data necessary includes the <a rel="nofollow" href="http://catholic-resources.org/Lectionary/Index-Sundays.htm" target="_blank">Sunday Lectionary</a> and a pair of reference guides that tell us how many chapters/verses are in each book of the Bible (<a rel="nofollow" href="http://catholic-resources.org/Bible/OT-Statistics-Compared.htm" target="_blank">Old Testament Reference</a>, <a rel="nofollow" href="http://catholic-resources.org/Bible/NT-Statistics-Greek.htm" target="_blank">New Testament Reference</a>). I could have played with web scraping but there were only a few tables so I just copied the tables in Felix’s website into Excel files (<a rel="nofollow" href="https://github.com/stefanavey/stefanavey.github.io/tree/master/_posts/catholic/plotBible" target="_blank">link to data files</a>).</p>
<details>

<figure>
<pre><code data-lang="r"><span>##############</span><span>
</span><span>## Packages ##</span><span>
</span><span>##############</span><span>
</span><span>library</span><span>(</span><span>readxl</span><span>)</span><span>
</span><span>library</span><span>(</span><span>scales</span><span>)</span><span>
</span><span>library</span><span>(</span><span>knitr</span><span>)</span><span>
</span><span>library</span><span>(</span><span>tidyverse</span><span>)</span><span>
</span><span>library</span><span>(</span><span>aveytoolkit</span><span>)</span><span>
</span><span>###############</span><span>
</span><span>## Variables ##</span><span>
</span><span>###############</span><span>
</span><span>data_dir</span><span> </span><span>&lt;-</span><span> </span><span>&quot;plotBible&quot;</span><span>
</span><span>OTRefFile</span><span> </span><span>&lt;-</span><span> </span><span>file.path</span><span>(</span><span>data_dir</span><span>,</span><span> </span><span>&quot;OldTestamentReference.xlsx&quot;</span><span>)</span><span>
</span><span>NTRefFile</span><span> </span><span>&lt;-</span><span> </span><span>file.path</span><span>(</span><span>data_dir</span><span>,</span><span> </span><span>&quot;NewTestamentReference.xlsx&quot;</span><span>)</span><span>
</span><span>abbrevFile</span><span> </span><span>&lt;-</span><span> </span><span>file.path</span><span>(</span><span>data_dir</span><span>,</span><span> </span><span>&quot;BibleAbbreviations.xlsx&quot;</span><span>)</span><span>
</span><span>LectSundaysFile</span><span> </span><span>&lt;-</span><span> </span><span>file.path</span><span>(</span><span>data_dir</span><span>,</span><span> </span><span>&quot;Lectionary-SundaysAndFeasts.xlsx&quot;</span><span>)</span><span>
</span><span>###############</span><span>
</span><span>## Functions ##</span><span>
</span><span>###############</span><span>
</span><span>source</span><span>(</span><span>file.path</span><span>(</span><span>data_dir</span><span>,</span><span> </span><span>&quot;helperFunctions.R&quot;</span><span>))</span></code></pre>
</figure>
</details>
<details>

<figure>
<pre><code data-lang="r"><span>########################</span><span>
</span><span>## Read in references ##</span><span>
</span><span>########################</span><span>
</span><span>testaments</span><span> </span><span>&lt;-</span><span> </span><span>c</span><span>(</span><span>&quot;OT&quot;</span><span>,</span><span> </span><span>&quot;NT&quot;</span><span>)</span><span>
</span><span>abbrev</span><span> </span><span>&lt;-</span><span> </span><span>map</span><span>(</span><span>testaments</span><span>,</span><span> </span><span>~</span><span>read_excel</span><span>(</span><span>abbrevFile</span><span>,</span><span> </span><span>sheet</span><span> </span><span>=</span><span> </span><span>.x</span><span>))</span><span>
</span><span>names</span><span>(</span><span>abbrev</span><span>)</span><span> </span><span>&lt;-</span><span> </span><span>testaments</span><span>
</span><span>## Old Testament</span><span>
</span><span>OTsections</span><span> </span><span>&lt;-</span><span> </span><span>c</span><span>(</span><span>&quot;Torah&quot;</span><span>,</span><span> </span><span>&quot;Historical&quot;</span><span>,</span><span> </span><span>&quot;Wisdom&quot;</span><span>,</span><span> </span><span>&quot;MajorProphets&quot;</span><span>,</span><span> </span><span>&quot;MinorProphets&quot;</span><span>)</span><span>
</span><span>OTref</span><span> </span><span>&lt;-</span><span> </span><span>map_df</span><span>(</span><span>OTsections</span><span>,</span><span> </span><span>function</span><span>(</span><span>OTsection</span><span>)</span><span> </span><span>{</span><span>
</span><span>read_excel</span><span>(</span><span>OTRefFile</span><span>,</span><span> </span><span>sheet</span><span> </span><span>=</span><span> </span><span>OTsection</span><span>,</span><span> </span><span>na</span><span> </span><span>=</span><span> </span><span>&quot;.&quot;</span><span>)</span><span> </span><span>%>%</span><span>
</span><span>mutate</span><span>(</span><span>Section</span><span> </span><span>=</span><span> </span><span>OTsection</span><span>)</span><span>
</span><span>})</span><span> </span><span>%>%</span><span>
</span><span>rename</span><span>(</span><span>Book</span><span> </span><span>=</span><span> </span><span>`Book Name`</span><span>)</span><span> </span><span>%>%</span><span>
</span><span>gather</span><span>(</span><span>matches</span><span>(</span><span>&quot;[0-9]+&quot;</span><span>),</span><span> </span><span>key</span><span> </span><span>=</span><span> </span><span>&quot;Chapter&quot;</span><span>,</span><span> </span><span>value</span><span> </span><span>=</span><span> </span><span>&quot;Verses&quot;</span><span>)</span><span> </span><span>%>%</span><span>
</span><span>filter</span><span>(</span><span>!</span><span>is.na</span><span>(</span><span>Verses</span><span>))</span><span> </span><span>%>%</span><span>
</span><span>select</span><span>(</span><span>Section</span><span>,</span><span> </span><span>Book</span><span>,</span><span> </span><span>Chapter</span><span>,</span><span> </span><span>Verses</span><span>)</span><span> </span><span>%>%</span><span>
</span><span>mutate</span><span>(</span><span>Book</span><span> </span><span>=</span><span> </span><span>factor</span><span>(</span><span>Book</span><span>,</span><span> </span><span># Order books in factor levels</span><span>
</span><span>levels</span><span> </span><span>=</span><span> </span><span>abbrev</span><span>$</span><span>OT</span><span>$</span><span>Name</span><span>),</span><span>
</span><span>Abbrv</span><span> </span><span>=</span><span> </span><span>abbrev</span><span>$</span><span>OT</span><span>$</span><span>Abbreviation</span><span>[</span><span>match</span><span>(</span><span>Book</span><span>,</span><span> </span><span>abbrev</span><span>$</span><span>OT</span><span>$</span><span>Name</span><span>)],</span><span>
</span><span>Chapter</span><span> </span><span>=</span><span> </span><span>as.numeric</span><span>(</span><span>Chapter</span><span>))</span><span> </span><span>%>%</span><span>
</span><span>arrange</span><span>(</span><span>Book</span><span>)</span><span> </span><span>%>%</span><span>
</span><span>mutate</span><span>(</span><span>Abbrv</span><span> </span><span>=</span><span> </span><span>factor</span><span>(</span><span>Abbrv</span><span>,</span><span> </span><span>levels</span><span> </span><span>=</span><span> </span><span>unique</span><span>(</span><span>Abbrv</span><span>)))</span><span>
</span><span>## Munge so that reference contains 1 row for every verse in the order they</span><span>
</span><span>## appear in the Old Testament with a `Pos` column to denote the position of the</span><span>
</span><span>## verse.</span><span>
</span><span>OTref2Pos</span><span> </span><span>&lt;-</span><span> </span><span>OTref</span><span> </span><span>%>%</span><span>
</span><span>arrange</span><span>(</span><span>Book</span><span>,</span><span> </span><span>Chapter</span><span>)</span><span> </span><span>%>%</span><span>
</span><span>mutate</span><span>(</span><span>Verse</span><span> </span><span>=</span><span> </span><span>map</span><span>(</span><span>Verses</span><span>,</span><span> </span><span>function</span><span>(</span><span>x</span><span>)</span><span> </span><span>1</span><span>:</span><span>x</span><span>))</span><span> </span><span>%>%</span><span>
</span><span>unnest</span><span>()</span><span> </span><span>%>%</span><span>
</span><span>mutate</span><span>(</span><span>Chapter_Verse</span><span> </span><span>=</span><span> </span><span>paste</span><span>(</span><span>Chapter</span><span>,</span><span> </span><span>Verse</span><span>,</span><span> </span><span>sep</span><span> </span><span>=</span><span> </span><span>':'</span><span>))</span><span> </span><span>%>%</span><span>
</span><span>mutate</span><span>(</span><span>Pos</span><span> </span><span>=</span><span> </span><span>1</span><span>:</span><span>n</span><span>())</span><span> </span><span>%>%</span><span>
</span><span>mutate</span><span>(</span><span>Testament</span><span> </span><span>=</span><span> </span><span>&quot;Old&quot;</span><span>)</span><span> </span><span>## New Testament</span><span>
</span><span>NTsections</span><span> </span><span>&lt;-</span><span> </span><span>c</span><span>(</span><span>&quot;Gospels&quot;</span><span>,</span><span> </span><span>&quot;NT&quot;</span><span>)</span><span>
</span><span>NTref</span><span> </span><span>&lt;-</span><span> </span><span>map_df</span><span>(</span><span>NTsections</span><span>,</span><span> </span><span>function</span><span>(</span><span>NTsection</span><span>)</span><span> </span><span>{</span><span>
</span><span>read_excel</span><span>(</span><span>NTRefFile</span><span>,</span><span> </span><span>sheet</span><span> </span><span>=</span><span> </span><span>NTsection</span><span>,</span><span> </span><span>na</span><span> </span><span>=</span><span> </span><span>&quot;.&quot;</span><span>)</span><span> </span><span>%>%</span><span>
</span><span>mutate</span><span>(</span><span>Section</span><span> </span><span>=</span><span> </span><span>NTsection</span><span>)</span><span> </span><span>%>%</span><span>
</span><span>mutate_at</span><span>(</span><span>vars</span><span>(</span><span>matches</span><span>(</span><span>&quot;[0-9]+&quot;</span><span>)),</span><span>
</span><span>funs</span><span>(</span><span>as.integer</span><span>(</span><span>str_replace</span><span>(</span><span>.</span><span>,</span><span> </span><span>fixed</span><span>(</span><span>&quot;*&quot;</span><span>),</span><span> </span><span>&quot;&quot;</span><span>))))</span><span>
</span><span>})</span><span> </span><span>%>%</span><span>
</span><span>rename</span><span>(</span><span>Abbrv</span><span> </span><span>=</span><span> </span><span>`Book  Name`</span><span>)</span><span> </span><span>%>%</span><span>
</span><span>gather</span><span>(</span><span>matches</span><span>(</span><span>&quot;[0-9]+&quot;</span><span>),</span><span> </span><span>key</span><span> </span><span>=</span><span> </span><span>&quot;Chapter&quot;</span><span>,</span><span> </span><span>value</span><span> </span><span>=</span><span> </span><span>&quot;Verses&quot;</span><span>)</span><span> </span><span>%>%</span><span>
</span><span>filter</span><span>(</span><span>!</span><span>is.na</span><span>(</span><span>Verses</span><span>))</span><span> </span><span>%>%</span><span>
</span><span>select</span><span>(</span><span>Section</span><span>,</span><span> </span><span>Abbrv</span><span>,</span><span> </span><span>Chapter</span><span>,</span><span> </span><span>Verses</span><span>)</span><span> </span><span>%>%</span><span>
</span><span>mutate</span><span>(</span><span>Abbrv</span><span> </span><span>=</span><span> </span><span>factor</span><span>(</span><span>Abbrv</span><span>,</span><span>
</span><span>levels</span><span> </span><span>=</span><span> </span><span>abbrev</span><span>$</span><span>NT</span><span>$</span><span>Abbreviation</span><span>),</span><span>
</span><span>Book</span><span> </span><span>=</span><span> </span><span>abbrev</span><span>$</span><span>NT</span><span>$</span><span>Name</span><span>[</span><span>match</span><span>(</span><span>Abbrv</span><span>,</span><span> </span><span>abbrev</span><span>$</span><span>NT</span><span>$</span><span>Abbreviation</span><span>)],</span><span>
</span><span>Chapter</span><span> </span><span>=</span><span> </span><span>as.numeric</span><span>(</span><span>Chapter</span><span>))</span><span> </span><span>%>%</span><span>
</span><span>arrange</span><span>(</span><span>Abbrv</span><span>)</span><span> </span><span>%>%</span><span>
</span><span>mutate</span><span>(</span><span>Book</span><span> </span><span>=</span><span> </span><span>factor</span><span>(</span><span>Book</span><span>,</span><span> </span><span>levels</span><span> </span><span>=</span><span> </span><span>unique</span><span>(</span><span>Book</span><span>)))</span><span>
</span><span>## Munge so that reference contains 1 row for every verse in the order they</span><span>
</span><span>## appear in the New Testament with a `Pos` column to denote the position of the</span><span>
</span><span>## verse.</span><span>
</span><span>NTref2Pos</span><span> </span><span>&lt;-</span><span> </span><span>NTref</span><span> </span><span>%>%</span><span>
</span><span>arrange</span><span>(</span><span>Book</span><span>,</span><span> </span><span>Chapter</span><span>)</span><span> </span><span>%>%</span><span>
</span><span>mutate</span><span>(</span><span>Verse</span><span> </span><span>=</span><span> </span><span>map</span><span>(</span><span>Verses</span><span>,</span><span> </span><span>function</span><span>(</span><span>x</span><span>)</span><span> </span><span>1</span><span>:</span><span>x</span><span>))</span><span> </span><span>%>%</span><span>
</span><span>unnest</span><span>()</span><span> </span><span>%>%</span><span>
</span><span>mutate</span><span>(</span><span>Chapter_Verse</span><span> </span><span>=</span><span> </span><span>paste</span><span>(</span><span>Chapter</span><span>,</span><span> </span><span>Verse</span><span>,</span><span> </span><span>sep</span><span> </span><span>=</span><span> </span><span>':'</span><span>))</span><span> </span><span>%>%</span><span>
</span><span>mutate</span><span>(</span><span>Pos</span><span> </span><span>=</span><span> </span><span>1</span><span>:</span><span>n</span><span>())</span><span> </span><span>%>%</span><span>
</span><span>mutate</span><span>(</span><span>Testament</span><span> </span><span>=</span><span> </span><span>&quot;New&quot;</span><span>)</span><span>
</span><span>ref2Pos</span><span> </span><span>&lt;-</span><span> </span><span>bind_rows</span><span>(</span><span>OTref2Pos</span><span>,</span><span> </span><span>NTref2Pos</span><span>)</span><span> </span><span>%>%</span><span>
</span><span>mutate</span><span>(</span><span>Pos</span><span> </span><span>=</span><span> </span><span>1</span><span>:</span><span>n</span><span>())</span></code></pre>
</figure>
</details>
<h2>Reference Data</h2>
<p>There is a lot of data transformation necessary but in the end, we have a data frame with 35,524 rows which contains 1 row for every verse in the Catholic Bible. This will be used as the reference to compare the lectionary to. Below I show part of the table containing the first and last 6 verses.</p>
<details>

<figure>
<pre><code data-lang="r"><span>ref2Pos</span><span> </span><span>%>%</span><span>
</span><span>select</span><span>(</span><span>Testament</span><span>,</span><span> </span><span>Section</span><span>,</span><span> </span><span>Book</span><span>,</span><span> </span><span>Chapter</span><span>,</span><span> </span><span>Verse</span><span>,</span><span> </span><span>Pos</span><span>)</span><span> </span><span>%>%</span><span>
</span><span>head</span><span>()</span><span> </span><span>%>%</span><span>
</span><span>knitr</span><span>::</span><span>kable</span><span>()</span></code></pre>
</figure>
</details>
<table>
<thead>
<tr>
<th>Testament</th>
<th>Section</th>
<th>Book</th>
<th>Chapter</th>
<th>Verse</th>
<th>Pos</th>
</tr>
</thead>
<tbody>
<tr>
<td>Old</td>
<td>Torah</td>
<td>Genesis</td>
<td>1</td>
<td>1</td>
<td>1</td>
</tr>
<tr>
<td>Old</td>
<td>Torah</td>
<td>Genesis</td>
<td>1</td>
<td>2</td>
<td>2</td>
</tr>
<tr>
<td>Old</td>
<td>Torah</td>
<td>Genesis</td>
<td>1</td>
<td>3</td>
<td>3</td>
</tr>
<tr>
<td>Old</td>
<td>Torah</td>
<td>Genesis</td>
<td>1</td>
<td>4</td>
<td>4</td>
</tr>
<tr>
<td>Old</td>
<td>Torah</td>
<td>Genesis</td>
<td>1</td>
<td>5</td>
<td>5</td>
</tr>
<tr>
<td>Old</td>
<td>Torah</td>
<td>Genesis</td>
<td>1</td>
<td>6</td>
<td>6</td>
</tr>
</tbody>
</table>
<details>

<figure>
<pre><code data-lang="r"><span>ref2Pos</span><span> </span><span>%>%</span><span>
</span><span>select</span><span>(</span><span>Testament</span><span>,</span><span> </span><span>Section</span><span>,</span><span> </span><span>Book</span><span>,</span><span> </span><span>Chapter</span><span>,</span><span> </span><span>Verse</span><span>,</span><span> </span><span>Pos</span><span>)</span><span> </span><span>%>%</span><span>
</span><span>tail</span><span>()</span><span> </span><span>%>%</span><span>
</span><span>knitr</span><span>::</span><span>kable</span><span>()</span></code></pre>
</figure>
</details>
<table>
<thead>
<tr>
<th>Testament</th>
<th>Section</th>
<th>Book</th>
<th>Chapter</th>
<th>Verse</th>
<th>Pos</th>
</tr>
</thead>
<tbody>
<tr>
<td>New</td>
<td>NT</td>
<td>Revelation</td>
<td>22</td>
<td>16</td>
<td>35519</td>
</tr>
<tr>
<td>New</td>
<td>NT</td>
<td>Revelation</td>
<td>22</td>
<td>17</td>
<td>35520</td>
</tr>
<tr>
<td>New</td>
<td>NT</td>
<td>Revelation</td>
<td>22</td>
<td>18</td>
<td>35521</td>
</tr>
<tr>
<td>New</td>
<td>NT</td>
<td>Revelation</td>
<td>22</td>
<td>19</td>
<td>35522</td>
</tr>
<tr>
<td>New</td>
<td>NT</td>
<td>Revelation</td>
<td>22</td>
<td>20</td>
<td>35523</td>
</tr>
<tr>
<td>New</td>
<td>NT</td>
<td>Revelation</td>
<td>22</td>
<td>21</td>
<td>35524</td>
</tr>
</tbody>
</table>
<h2>Lectionary Data</h2>
<details>

<figure>
<pre><code data-lang="r"><span>###################################################</span><span>
</span><span>## Read in the Lectionary for Sundays and Feasts ##</span><span>
</span><span>###################################################</span><span>
</span><span>readings</span><span> </span><span>&lt;-</span><span> </span><span>c</span><span>(</span><span>&quot;OT&quot;</span><span>,</span><span> </span><span>&quot;Psalm&quot;</span><span>,</span><span> </span><span>&quot;NT&quot;</span><span>,</span><span> </span><span>&quot;Gospel&quot;</span><span>)</span><span>
</span><span>LectSundays</span><span> </span><span>&lt;-</span><span> </span><span>map</span><span>(</span><span>readings</span><span>,</span><span> </span><span>~</span><span>read_excel</span><span>(</span><span>LectSundaysFile</span><span>,</span><span> </span><span>sheet</span><span> </span><span>=</span><span> </span><span>.x</span><span>))</span><span>
</span><span>names</span><span>(</span><span>LectSundays</span><span>)</span><span> </span><span>&lt;-</span><span> </span><span>readings</span><span>
</span><span>SunLect</span><span> </span><span>&lt;-</span><span> </span><span>bind_rows</span><span>(</span><span>LectSundays</span><span>)</span><span> </span><span>%>%</span><span>
</span><span>tbl_df</span><span>()</span><span> </span><span>%>%</span><span>
</span><span>separate</span><span>(</span><span>LectNum_Year</span><span>,</span><span> </span><span>c</span><span>(</span><span>&quot;LectNum&quot;</span><span>,</span><span> </span><span>&quot;Year&quot;</span><span>),</span><span> </span><span>sep</span><span> </span><span>=</span><span> </span><span>'-'</span><span>)</span><span> </span><span>%>%</span><span>
</span><span>mutate</span><span>(</span><span>YearA</span><span> </span><span>=</span><span> </span><span>grepl</span><span>(</span><span>&quot;A&quot;</span><span>,</span><span> </span><span>Year</span><span>),</span><span>
</span><span>YearB</span><span> </span><span>=</span><span> </span><span>grepl</span><span>(</span><span>&quot;B&quot;</span><span>,</span><span> </span><span>Year</span><span>),</span><span>
</span><span>YearC</span><span> </span><span>=</span><span> </span><span>grepl</span><span>(</span><span>&quot;C&quot;</span><span>,</span><span> </span><span>Year</span><span>))</span></code></pre>
</figure>
</details>
<p>Below are some entries in the lectionary including the <strong>Reading</strong> as well as the <strong>Year</strong> in the 3-year cycle (ABC means read in years A, B, and C). For this analysis, I’ll ignore the <strong>Year</strong> and just consider the coverage over the whole 3-year cycle.</p>
<details>

<figure>
<pre><code data-lang="r"><span>SunLect</span><span> </span><span>%>%</span><span>
</span><span>select</span><span>(</span><span>Reading</span><span>,</span><span> </span><span>LectNum</span><span>,</span><span> </span><span>Year</span><span>,</span><span> </span><span>Day</span><span>)</span><span> </span><span>%>%</span><span>
</span><span>head</span><span>()</span><span> </span><span>%>%</span><span>
</span><span>kable</span><span>()</span></code></pre>
</figure>
</details>
<table>
<thead>
<tr>
<th>Reading</th>
<th>LectNum</th>
<th>Year</th>
<th>Day</th>
</tr>
</thead>
<tbody>
<tr>
<td>Gen 1:1-2:2 or 1:1, 26-31a</td>
<td>41</td>
<td>ABC</td>
<td>Easter Vigil (1st Reading)</td>
</tr>
<tr>
<td>Gen 2:7-9; 3:1-7</td>
<td>22</td>
<td>A</td>
<td>1st Sunday of Lent</td>
</tr>
<tr>
<td>Gen 2:18-24</td>
<td>140</td>
<td>B</td>
<td>27th Sunday in Ordinary Time</td>
</tr>
<tr>
<td>Gen 3:9-15</td>
<td>89</td>
<td>B</td>
<td>10th Sunday in Ordinary Time</td>
</tr>
<tr>
<td>Gen 9:8-15</td>
<td>23</td>
<td>B</td>
<td>1st Sunday of Lent</td>
</tr>
<tr>
<td>Gen 11:1-9</td>
<td>62</td>
<td>ABC</td>
<td>Pentecost Sunday: Vigil Mass (Option 1)</td>
</tr>
</tbody>
</table>
<h2>Parsing Verses</h2>
<p>The crucial part is matching the <strong>Reading</strong> to the reference. This seems straightforward but can be very tricky in some cases. I wrote a basic parser (<a rel="nofollow" href="https://github.com/stefanavey/stefanavey.github.io/blob/master/_posts/catholic/plotBible/helperFunctions.R" target="_blank">see code</a>) to handle the most common cases. It ignores some aspects such as the “or” option as in the first row of the table above. Usually an “or” option gives a longer form followed by a shorter form (subset of the first option) so I’ll only consider the longer forms.</p>
<p>Each set of continuous verses gets stored in a new data frame by the parser. For example, <em>Gen 1:1-2:2 or 1:1, 26-31a</em> will get parsed to:</p>
<details>

<figure>
<pre><code data-lang="r"><span>ParseFull</span><span>(</span><span>SunLect</span><span>$</span><span>Reading</span><span>[</span><span>1</span><span>])</span></code></pre>
</figure>
</details>
<figure>
<pre><code data-lang="text">##   start end Abbrv
## 1   1:1 2:2   Gen</code></pre>
</figure>
<p>and <em>Gen 2:7-9; 3:1-7</em> will get parsed to:</p>
<details>

<figure>
<pre><code data-lang="r"><span>ParseFull</span><span>(</span><span>SunLect</span><span>$</span><span>Reading</span><span>[</span><span>2</span><span>])</span></code></pre>
</figure>
</details>
<figure>
<pre><code data-lang="text">##   start end Abbrv
## 1   2:7 2:9   Gen
## 2   3:1 3:7   Gen</code></pre>
</figure>
<p>Then, once each reading from the lectionary is parsed, it gets matched back to the reference.</p>
<details>

<figure>
<pre><code data-lang="r"><span>## Apply parser on the full Sunday Lectionary</span><span>
</span><span>res</span><span> </span><span>&lt;-</span><span> </span><span>SunLect</span><span> </span><span>%>%</span><span>
</span><span>mutate</span><span>(</span><span>Pos</span><span> </span><span>=</span><span> </span><span>map</span><span>(</span><span>Reading</span><span>,</span><span> </span><span>function</span><span>(</span><span>x</span><span>)</span><span> </span><span>{</span><span>
</span><span>## cat(x, sep = '\n') # debugging</span><span>
</span><span>ParseFull</span><span>(</span><span>x</span><span>)</span><span> </span><span>%>%</span><span>
</span><span>left_join</span><span>(</span><span>ref2Pos</span><span>,</span><span> </span><span>by</span><span> </span><span>=</span><span> </span><span>c</span><span>(</span><span>start</span><span> </span><span>=</span><span> </span><span>&quot;Chapter_Verse&quot;</span><span>,</span><span> </span><span>Abbrv</span><span> </span><span>=</span><span> </span><span>&quot;Abbrv&quot;</span><span>))</span><span> </span><span>%>%</span><span>
</span><span>left_join</span><span>(</span><span>ref2Pos</span><span>,</span><span> </span><span>by</span><span> </span><span>=</span><span> </span><span>c</span><span>(</span><span>end</span><span> </span><span>=</span><span> </span><span>&quot;Chapter_Verse&quot;</span><span>,</span><span> </span><span>Abbrv</span><span> </span><span>=</span><span> </span><span>&quot;Abbrv&quot;</span><span>))</span><span> </span><span>%>%</span><span>
</span><span>rowwise</span><span>()</span><span> </span><span>%>%</span><span>
</span><span>do</span><span>(</span><span>data.frame</span><span>(</span><span>Pos</span><span> </span><span>=</span><span> </span><span>if</span><span> </span><span>(</span><span>any</span><span>(</span><span>is.na</span><span>(</span><span>.</span><span>)))</span><span> </span><span>{</span><span>
</span><span>NA</span><span>
</span><span>}</span><span> </span><span>else</span><span> </span><span>{</span><span>
</span><span>.</span><span>$</span><span>Pos.x</span><span>:</span><span>.</span><span>$</span><span>Pos.y</span><span>
</span><span>}</span><span>
</span><span>))</span><span> </span><span>%>%</span><span>
</span><span>pull</span><span>(</span><span>Pos</span><span>)}))</span><span>
</span><span>## Combine the results with the reference</span><span>
</span><span>comb_dat</span><span> </span><span>&lt;-</span><span> </span><span>res</span><span> </span><span>%>%</span><span>
</span><span>unnest</span><span>(</span><span>Pos</span><span>)</span><span> </span><span>%>%</span><span>
</span><span>left_join</span><span>(</span><span>ref2Pos</span><span>,</span><span> </span><span>by</span><span> </span><span>=</span><span> </span><span>&quot;Pos&quot;</span><span>)</span></code></pre>
</figure>
</details>
<p>So each reading is parsed into multiple segments and then mapped onto the position variable (<strong>Pos</strong>) from the Reference. The result for one reading looks like this:</p>
<details>

<figure>
<pre><code data-lang="r"><span>comb_dat</span><span> </span><span>%>%</span><span>
</span><span>select</span><span>(</span><span>Reading</span><span>,</span><span> </span><span>Section</span><span>,</span><span> </span><span>Book</span><span>,</span><span> </span><span>Chapter</span><span>,</span><span> </span><span>Verse</span><span>,</span><span> </span><span>Pos</span><span>)</span><span> </span><span>%>%</span><span>
</span><span>filter</span><span>(</span><span>Reading</span><span> </span><span>==</span><span> </span><span>&quot;Isa 63:16b-17, 19b; 64:2-7&quot;</span><span>)</span><span> </span><span>%>%</span><span>
</span><span>kable</span><span>()</span></code></pre>
</figure>
</details>
<table>
<thead>
<tr>
<th>Reading</th>
<th>Section</th>
<th>Book</th>
<th>Chapter</th>
<th>Verse</th>
<th>Pos</th>
</tr>
</thead>
<tbody>
<tr>
<td>Isa 63:16b-17, 19b; 64:2-7</td>
<td>MajorProphets</td>
<td>Isaiah</td>
<td>63</td>
<td>16</td>
<td>22923</td>
</tr>
<tr>
<td>Isa 63:16b-17, 19b; 64:2-7</td>
<td>MajorProphets</td>
<td>Isaiah</td>
<td>63</td>
<td>17</td>
<td>22924</td>
</tr>
<tr>
<td>Isa 63:16b-17, 19b; 64:2-7</td>
<td>MajorProphets</td>
<td>Isaiah</td>
<td>63</td>
<td>19</td>
<td>22926</td>
</tr>
<tr>
<td>Isa 63:16b-17, 19b; 64:2-7</td>
<td>MajorProphets</td>
<td>Isaiah</td>
<td>64</td>
<td>2</td>
<td>22928</td>
</tr>
<tr>
<td>Isa 63:16b-17, 19b; 64:2-7</td>
<td>MajorProphets</td>
<td>Isaiah</td>
<td>64</td>
<td>3</td>
<td>22929</td>
</tr>
<tr>
<td>Isa 63:16b-17, 19b; 64:2-7</td>
<td>MajorProphets</td>
<td>Isaiah</td>
<td>64</td>
<td>4</td>
<td>22930</td>
</tr>
<tr>
<td>Isa 63:16b-17, 19b; 64:2-7</td>
<td>MajorProphets</td>
<td>Isaiah</td>
<td>64</td>
<td>5</td>
<td>22931</td>
</tr>
<tr>
<td>Isa 63:16b-17, 19b; 64:2-7</td>
<td>MajorProphets</td>
<td>Isaiah</td>
<td>64</td>
<td>6</td>
<td>22932</td>
</tr>
<tr>
<td>Isa 63:16b-17, 19b; 64:2-7</td>
<td>MajorProphets</td>
<td>Isaiah</td>
<td>64</td>
<td>7</td>
<td>22933</td>
</tr>
</tbody>
</table>
<h1>Visualize the Lectionary Coverage</h1>
<p>The inspiration behind this visualization is picturing the whole Bible as a bookshelf. There is one row for each major section (e.g., Torah, Minor Prophets, Gospels) and each section is made up of multiple books. In the visualization, lines are used to indicate coverage of a particular verse in the lectionary.</p>
<details>

<figure>
<pre><code data-lang="r"><span>## Get all section lengths</span><span>
</span><span>sections</span><span> </span><span>&lt;-</span><span> </span><span>ref2Pos</span><span> </span><span>%>%</span><span>
</span><span>select</span><span>(</span><span>Section</span><span>,</span><span> </span><span>Abbrv</span><span>)</span><span> </span><span>%>%</span><span>
</span><span>distinct</span><span>()</span><span> </span><span>%>%</span><span>
</span><span>group_by</span><span>(</span><span>Section</span><span>)</span><span> </span><span>%>%</span><span>
</span><span>mutate</span><span>(</span><span>Abbrv</span><span> </span><span>=</span><span> </span><span>list</span><span>(</span><span>Abbrv</span><span>))</span><span> </span><span>%>%</span><span>
</span><span>distinct</span><span>()</span><span> </span><span>%>%</span><span>
</span><span>deframe</span><span>()</span><span>
</span><span>sectPos</span><span> </span><span>&lt;-</span><span> </span><span>map_int</span><span>(</span><span>names</span><span>(</span><span>sections</span><span>),</span><span> </span><span>function</span><span>(</span><span>sect</span><span>)</span><span> </span><span>{</span><span>
</span><span>abbrvs</span><span> </span><span>&lt;-</span><span> </span><span>sections</span><span>[[</span><span>sect</span><span>]]</span><span>
</span><span>lastAbbrv</span><span> </span><span>&lt;-</span><span> </span><span>abbrvs</span><span>[</span><span>length</span><span>(</span><span>abbrvs</span><span>)]</span><span>
</span><span>maxPos</span><span> </span><span>&lt;-</span><span> </span><span>ref2Pos</span><span> </span><span>%>%</span><span>
</span><span>filter</span><span>(</span><span>Abbrv</span><span> </span><span>==</span><span> </span><span>lastAbbrv</span><span>)</span><span> </span><span>%>%</span><span>
</span><span>pull</span><span>(</span><span>Pos</span><span>)</span><span> </span><span>%>%</span><span>
</span><span>max</span><span>()</span><span>
</span><span>return</span><span>(</span><span>maxPos</span><span>)</span><span>
</span><span>})</span><span>
</span><span>names</span><span>(</span><span>sectPos</span><span>)</span><span> </span><span>&lt;-</span><span> </span><span>names</span><span>(</span><span>sections</span><span>)</span><span>
</span><span>sectPos2</span><span> </span><span>&lt;-</span><span> </span><span>c</span><span>(</span><span>0</span><span>,</span><span> </span><span>sectPos</span><span>[</span><span>-</span><span>length</span><span>(</span><span>sectPos</span><span>)])</span><span>
</span><span>names</span><span>(</span><span>sectPos2</span><span>)</span><span> </span><span>&lt;-</span><span> </span><span>names</span><span>(</span><span>sectPos</span><span>)</span><span>
</span><span>sectLength</span><span> </span><span>&lt;-</span><span> </span><span>sectPos</span><span> </span><span>-</span><span> </span><span>sectPos2</span><span>
</span><span>## Tweak Section Labels for Plot</span><span>
</span><span>sectLabels</span><span> </span><span>&lt;-</span><span> </span><span>names</span><span>(</span><span>sections</span><span>)</span><span> </span><span>%>%</span><span>
</span><span>paste0</span><span>(</span><span>.</span><span>,</span><span> </span><span>&quot; (V=&quot;</span><span>,</span><span> </span><span>comma</span><span>(</span><span>sectLength</span><span>[</span><span>.</span><span>]),</span><span> </span><span>&quot;)&quot;</span><span>)</span><span> </span><span>%>%</span><span>
</span><span>str_replace</span><span>(</span><span>&quot;Prophets&quot;</span><span>,</span><span> </span><span>&quot; Prophets&quot;</span><span>)</span><span> </span><span>%>%</span><span>
</span><span>str_replace</span><span>(</span><span>&quot;NT&quot;</span><span>,</span><span> </span><span>&quot;New Testament&quot;</span><span>)</span><span> </span><span>%>%</span><span>
</span><span>setNames</span><span>(</span><span>names</span><span>(</span><span>sections</span><span>))</span><span>
</span><span>## Generate plotting data</span><span>
</span><span>dat</span><span> </span><span>&lt;-</span><span> </span><span>comb_dat</span><span> </span><span>%>%</span><span>
</span><span>filter</span><span>(</span><span>!</span><span>is.na</span><span>(</span><span>Pos</span><span>))</span><span> </span><span>%>%</span><span>
</span><span>select</span><span>(</span><span>Section</span><span>,</span><span> </span><span>Abbrv</span><span>,</span><span> </span><span>Chapter</span><span>,</span><span> </span><span>Verse</span><span>,</span><span> </span><span>Pos</span><span>)</span><span> </span><span>%>%</span><span>
</span><span>mutate</span><span>(</span><span>Pos</span><span> </span><span>=</span><span> </span><span>(</span><span>Pos</span><span> </span><span>-</span><span> </span><span>sectPos2</span><span>[</span><span>Section</span><span>])</span><span> </span><span>/</span><span> </span><span>sectLength</span><span>[</span><span>Section</span><span>])</span><span> </span><span>%>%</span><span>
</span><span>mutate</span><span>(</span><span>SectionLabel</span><span> </span><span>=</span><span> </span><span>factor</span><span>(</span><span>sectLabels</span><span>[</span><span>Section</span><span>],</span><span>
</span><span>levels</span><span> </span><span>=</span><span> </span><span>sectLabels</span><span>))</span><span> </span><span>%>%</span><span>
</span><span>mutate</span><span>(</span><span>Label</span><span> </span><span>=</span><span> </span><span>paste0</span><span>(</span><span>Abbrv</span><span>,</span><span> </span><span>&quot; &quot;</span><span>,</span><span> </span><span>Chapter</span><span>,</span><span> </span><span>&quot;:&quot;</span><span>,</span><span> </span><span>Verse</span><span>))</span><span> </span><span>%>%</span><span>
</span><span>distinct</span><span>()</span><span> </span><span># ignore how many times something appeared (read 2 or 3 times)</span><span>
</span><span>book_dat</span><span> </span><span>&lt;-</span><span> </span><span>ref2Pos</span><span> </span><span>%>%</span><span>
</span><span>mutate</span><span>(</span><span>Abbrv</span><span> </span><span>=</span><span> </span><span>factor</span><span>(</span><span>Abbrv</span><span>,</span><span> </span><span>levels</span><span> </span><span>=</span><span> </span><span>unique</span><span>(</span><span>Abbrv</span><span>)))</span><span> </span><span>%>%</span><span>
</span><span>mutate</span><span>(</span><span>Pos</span><span> </span><span>=</span><span> </span><span>(</span><span>Pos</span><span> </span><span>-</span><span> </span><span>sectPos2</span><span>[</span><span>Section</span><span>])</span><span> </span><span>/</span><span> </span><span>sectLength</span><span>[</span><span>Section</span><span>])</span><span> </span><span>%>%</span><span>
</span><span>mutate</span><span>(</span><span>SectionLabel</span><span> </span><span>=</span><span> </span><span>factor</span><span>(</span><span>sectLabels</span><span>[</span><span>Section</span><span>],</span><span>
</span><span>levels</span><span> </span><span>=</span><span> </span><span>sectLabels</span><span>))</span><span> </span><span>%>%</span><span>
</span><span>group_by</span><span>(</span><span>SectionLabel</span><span>,</span><span> </span><span>Abbrv</span><span>)</span><span> </span><span>%>%</span><span>
</span><span>summarize</span><span>(</span><span>Pos</span><span> </span><span>=</span><span> </span><span>min</span><span>(</span><span>Pos</span><span>))</span><span> </span><span>%>%</span><span>
</span><span>ungroup</span><span>()</span><span> </span><span>%>%</span><span>
</span><span>group_by</span><span>(</span><span>SectionLabel</span><span>)</span><span> </span><span>%>%</span><span>
</span><span>mutate</span><span>(</span><span>y</span><span> </span><span>=</span><span> </span><span>rep</span><span>(</span><span>c</span><span>(</span><span>0</span><span>,</span><span> </span><span>0.33</span><span>,</span><span> </span><span>0.66</span><span>,</span><span> </span><span>1</span><span>),</span><span> </span><span>length.out</span><span> </span><span>=</span><span> </span><span>n</span><span>()))</span><span> </span><span>%>%</span><span>
</span><span>ungroup</span><span>()</span><span>
</span><span>## Create the plot</span><span>
</span><span>gg</span><span> </span><span>&lt;-</span><span> </span><span>ggplot</span><span>(</span><span>dat</span><span>,</span><span> </span><span>x</span><span> </span><span>=</span><span> </span><span>0</span><span>,</span><span> </span><span>y</span><span> </span><span>=</span><span> </span><span>1</span><span>)</span><span> </span><span>+</span><span>
</span><span>geom_vline</span><span>(</span><span>aes</span><span>(</span><span>xintercept</span><span> </span><span>=</span><span> </span><span>Pos</span><span>,</span><span> </span><span>color</span><span> </span><span>=</span><span> </span><span>Abbrv</span><span>),</span><span> </span><span>show.legend</span><span> </span><span>=</span><span> </span><span>FALSE</span><span>)</span><span> </span><span>+</span><span>
</span><span>geom_label</span><span>(</span><span>data</span><span> </span><span>=</span><span> </span><span>book_dat</span><span>,</span><span> </span><span>aes</span><span>(</span><span>x</span><span> </span><span>=</span><span> </span><span>Pos</span><span>,</span><span> </span><span>y</span><span> </span><span>=</span><span> </span><span>y</span><span>,</span><span> </span><span>label</span><span> </span><span>=</span><span> </span><span>Abbrv</span><span>),</span><span>
</span><span>hjust</span><span> </span><span>=</span><span> </span><span>0</span><span>,</span><span> </span><span>size</span><span> </span><span>=</span><span> </span><span>3.5</span><span>)</span><span> </span><span>+</span><span> </span><span>scale_x_continuous</span><span>(</span><span>labels</span><span> </span><span>=</span><span> </span><span>percent</span><span>)</span><span> </span><span>+</span><span> </span><span>scale_y_continuous</span><span>(</span><span>labels</span><span> </span><span>=</span><span> </span><span>NULL</span><span>,</span><span> </span><span>breaks</span><span> </span><span>=</span><span> </span><span>NULL</span><span>)</span><span> </span><span>+</span><span>
</span><span>xlab</span><span>(</span><span>&quot;&quot;</span><span>)</span><span> </span><span>+</span><span>
</span><span>ylab</span><span>(</span><span>&quot;&quot;</span><span>)</span><span> </span><span>+</span><span>
</span><span>ggtitle</span><span>(</span><span>paste</span><span>(</span><span>&quot;Bible Coverage of Catholic Lectionary for&quot;</span><span>,</span><span>
</span><span>&quot;Sundays and Major Feasts&quot;</span><span>,</span><span> </span><span>sep</span><span> </span><span>=</span><span> </span><span>'\n'</span><span>))</span><span> </span><span>+</span><span>
</span><span>labs</span><span>(</span><span>caption</span><span> </span><span>=</span><span> </span><span>&quot;Three Year Cycle&quot;</span><span>)</span><span> </span><span>+</span><span>
</span><span>facet_grid</span><span>(</span><span>SectionLabel</span><span> </span><span>~</span><span> </span><span>.</span><span>,</span><span> </span><span>scales</span><span> </span><span>=</span><span> </span><span>&quot;fixed&quot;</span><span>)</span><span> </span><span>+</span><span>
</span><span>getBaseTheme</span><span>()</span><span> </span><span>+</span><span>
</span><span>theme</span><span>(</span><span>strip.text</span><span> </span><span>=</span><span> </span><span>element_text</span><span>(</span><span>size</span><span> </span><span>=</span><span> </span><span>10</span><span>,</span><span> </span><span>face</span><span> </span><span>=</span><span> </span><span>&quot;bold&quot;</span><span>))</span><span>
</span><span>plot</span><span>(</span><span>gg</span><span>)</span></code></pre>
</figure>
</details>
<p><img alt="plot of chunk unnamed-chunk-11" src="https://i2.wp.com/stefanavey.github.io/img/figure/unnamed-chunk-11-1.png?w=456" data-recalc-dims="1"></p>
<details>

<figure>
<pre><code data-lang="r"><span>GetCoverage</span><span> </span><span>&lt;-</span><span> </span><span>function</span><span>(</span><span>abbrv</span><span>)</span><span> </span><span>{</span><span>
</span><span>tot</span><span> </span><span>&lt;-</span><span> </span><span>ref2Pos</span><span> </span><span>%>%</span><span>
</span><span>filter</span><span>(</span><span>Abbrv</span><span> </span><span>==</span><span> </span><span>abbrv</span><span>)</span><span> </span><span>%>%</span><span>
</span><span>select</span><span>(</span><span>Chapter_Verse</span><span>)</span><span> </span><span>%>%</span><span>
</span><span>distinct</span><span>()</span><span> </span><span>%>%</span><span>
</span><span>nrow</span><span>()</span><span>
</span><span>cov</span><span> </span><span>&lt;-</span><span> </span><span>dat</span><span> </span><span>%>%</span><span>
</span><span>filter</span><span>(</span><span>Abbrv</span><span> </span><span>==</span><span> </span><span>abbrv</span><span>)</span><span> </span><span>%>%</span><span>
</span><span>select</span><span>(</span><span>Pos</span><span>)</span><span> </span><span>%>%</span><span>
</span><span>distinct</span><span>()</span><span> </span><span>%>%</span><span>
</span><span>nrow</span><span>()</span><span>
</span><span>return</span><span>(</span><span>cov</span><span>/</span><span>tot</span><span>)</span><span>
</span><span>}</span></code></pre>
</figure>
</details>
<p>The amount of white space clearly shows what parts of the Bible are not contained in the lectionary. For example, in the New Testament section (bottom row of the “bookshelf”), it is apparent that little of the book of <em>Acts</em> (coverage = 17%) or <em>Revelation</em> (coverage = 10%) are in the Sunday lectionary.</p>
<p>While most of the Old Testament is sparsely covered, the Psalms (abbreviated <em>Ps</em>) are one of the most covered books at 21% coverage. One of the drawbacks of this visualization is that each row contains a different number of verses so that the visual sense of “fullness” can be deceiving.</p>
<h1>Acknowledgments</h1>
<p>Huge kudos to Felix Just, S.J., Ph.D. for compiling these resources:</p>
<ul>
<li><a rel="nofollow" href="http://catholic-resources.org/Bible/Abbreviations-Abreviaciones.htm" target="_blank">Biblical Book Names &amp; Abbreviations</a></li>
<li><a rel="nofollow" href="http://catholic-resources.org/Bible/OT-Statistics-Compared.htm" target="_blank">Old Testament Reference</a></li>
<li><a rel="nofollow" href="http://catholic-resources.org/Bible/NT-Statistics-Greek.htm" target="_blank">New Testament Reference</a></li>
<li><a rel="nofollow" href="http://catholic-resources.org/Lectionary/Index-Weekdays.htm" target="_blank">Scripture Index of Lectionary Readings Used for Weekday Masses</a></li>
<li><a rel="nofollow" href="http://catholic-resources.org/Lectionary/Index-Sundays.htm" target="_blank">Scripture Index of Lectionary Readings Used for Sundays and Major Feasts</a></li>
</ul>
	<p>
<div>
<div>To <strong>leave a comment</strong> for the author, please follow the link and comment on their blog: <strong><a href="http://stefanavey.github.io/r/2018/10/27/visualizing-the-lectionary-part-1"> Stefan Avey - r</a></strong>.</div>
<hr>
<a rel="nofollow" href="https://www.r-bloggers.com/">R-bloggers.com</a> offers <strong><a rel="nofollow" href="https://feedburner.google.com/fb/a/mailverify?uri=RBloggers">daily e-mail updates</a></strong> about <a rel="nofollow" href="https://www.r-project.org/" title="The R Project for Statistical Computing">R</a> news and <a rel="nofollow" href="https://www.r-bloggers.com/search/tutorial" title="R tutorials">tutorials</a> on topics such as: <a rel="nofollow" href="https://www.r-bloggers.com/search/data%20science" title="Data science">Data science</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/Big%20Data" title="Big Data">Big Data, <a rel="nofollow" href="https://www.r-users.com/" title="R jobs">R jobs</a>, visualization (<a rel="nofollow" href="https://www.r-bloggers.com/search/ggplot2" title="ggplot and ggplot2 tutorials">ggplot2</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/boxplot" title="Boxplots using lattice and ggplot2 tutorials">Boxplots</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/map" title="Maps and gis">maps</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/animation" title="Animation in R">animation</a>), programming (<a rel="nofollow" href="https://www.r-bloggers.com/search/RStudio" title="RStudio IDE for R">RStudio</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/sweave" title="Sweave and literate programming">Sweave</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/LaTeX" title="LaTeX in R">LaTeX</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/SQL" title="SQL and databases">SQL</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/eclipse" title="Eclipse IDE for R">Eclipse</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/git" title="git and github, Version Control System">git</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/hadoop" title="Large data in R using Hadoop">hadoop</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/Web+Scraping" title="Web Scraping of google, facebook, yahoo, twitter and more using R">Web Scraping</a>) statistics (<a rel="nofollow" href="https://www.r-bloggers.com/search/regression" title="Regressions and ANOVA analysis tutorials">regression</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/PCA" title="principal component analysis tutorial">PCA</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/time+series" title="Time series">time series</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/trading" title="finance trading">trading</a>) and more...
<img width="1" alt="" src="http://feeds.feedburner.com/~r/RBloggers/~4/RjMhMX6RFS0" height="1"></a></div>