Introduction to the Perseus Catalog

From the Amazon product page:

Embracing the whole of ancient history and literature for more than two thousand years, the three volumes of the Dictionary of Greek and Roman Biography and Mythology provide a wealth of information on every significant figure mentioned by the Greek and Roman writers in the areas of history, philosophy, mathematics, the Arts, medicine, law, geography, architecture, and more. A full account of the works as well as the lives of the Greek and Roman writers is included. Painters, sculptors, and architects are treated at considerable length and an account is given of all their works extant or of which there is any record in the ancient writers.

library(historydata)
library(tidyverse)
data("perseus_dictionary")

Entries on Roman Senators and Their Contemporary Emperors

While somewhat imprecise and imperfect, students could make connections within the string data. Here we try and filter Roman Senators and determine their contemporary Caesar.

perseus_grep <- partial(grepl, ignore.case = TRUE)

roman_senators <- perseus_dictionary %>% 
  filter(grepl("rome", entry, ignore.case = TRUE) & grepl("senator", entry, ignore.case = TRUE)) %>% 
  mutate(emperor = case_when(
    perseus_grep("Augustus", entry) ~ "Augustus",
    perseus_grep("Julius", entry) ~ "Julius",
    perseus_grep("Domition", entry) ~ "Domition",
    perseus_grep("Nero", entry) ~ "Nero",
    perseus_grep("Claudius", entry) ~ "Claudius",
    perseus_grep("Pius", entry) ~ "Pius",
    TRUE ~ "Other")
  )

count(roman_senators, emperor, sort = TRUE)
## # A tibble: 6 x 2
##    emperor     n
##      <chr> <int>
## 1    Other    51
## 2 Augustus    40
## 3 Claudius    17
## 4   Julius    16
## 5     Nero    12
## 6     Pius     8

You could do something similar by searching for Christian martyrs or bishops, and then identifying the contemporary ruler. You could hypothetically drill down further by searching for the manner of death, e.g. “crucified|crucifixion”.

Olympus

Which Olympian appears in the most entries?

olympians <- c("Athena", "Zeus", "Hera", "Aphrodite", "Hephaestus", "Ares")
map(olympians, function(x) {
  paste(x, "appears", sum(stringr::str_detect(perseus_dictionary$entry, x)), "times.")
}) %>% 
  flatten_chr()
## [1] "Athena appears 762 times."    "Zeus appears 501 times."     
## [3] "Hera appears 806 times."      "Aphrodite appears 159 times."
## [5] "Hephaestus appears 75 times." "Ares appears 108 times."