Since its first episode on August 22, 2010, The Incomparable has accumulated 1052 hours of content (roughly 44 days) across 767 episodes.
The Mothership
Introduction
I would like to do a lot more with this, but currently time is scarce.
However, I want to fulfill Jason’s request, since I would love to be worthy of the title of record keeper.
The latest episode in the current dataset:
Code
|>
mothership_wide head(1) |>
select(number, date, title, host, guest) |>
mutate(
date = as.Date(date),
title = glue::glue("<a href=\"https://www.theincomparable.com/theincomparable/{number}\">{title}</a>"),
guest = and::and(stringr::str_split(guest, ";", simplify = TRUE))
|>
) ::kable(
knitrcol.names = c("#", "Date", "Title", "Host", "Guests"),
escape = FALSE
|>
) ::kable_styling() kableExtra
# | Date | Title | Host | Guests |
---|---|---|---|---|
742 | 2024-11-15 | Hi, Anxiety | Lex Friedman | Brian Hamilton, David J. Loehr, and Kelly Guimont |
Panelists
2024 Panelists
There were 45 episodes published in 2024. Here’s a breakdown by host and guest counts.
Code
|>
mothership_long # Filter out special episodes containing letters
filter(!str_detect(number, "[a-z]$"), year == current_year) |>
count(person, role) |>
pivot_wider(names_from = role, values_from = n, values_fill = 0) |>
mutate(
person = factor(person),
total = guest + host,
total_perc = scales::label_percent(.accuracy = .1)(total / nrow(mothership_wide)),
rank = rank(-total, ties.method = "min")
|>
) arrange(desc(total)) |>
select(rank, person, host, guest, total, total_perc) |>
reactable(
columns = list(
rank = colDef(name = "Rank", sortable = TRUE),
person = colDef(name = "Person", filterable = TRUE, sortable = TRUE),
host = colDef(name = "Host", sortable = TRUE),
guest = colDef(name = "Guest", sortable = TRUE),
total = colDef(name = "Total", sortable = TRUE),
total_perc = colDef(name = "Total (%)", sortable = TRUE)
) )
Looking at it as a bar chart is not really helping I guess but sure why not.
Code
<- mothership_long |>
panelist_breakdown filter(year == current_year) |>
group_by(person, role) |>
tally() |>
spread(role, n) |>
replace_na(list(guest = 0, host = 0)) |>
mutate(total = guest + host)
<- panelist_breakdown |>
panelist_breakdown_long gather(role, n, guest, host)
ggplot(data = panelist_breakdown_long, aes(x = reorder(person, total), y = n, fill = role)) +
geom_col(color = "black", alpha = .6) +
coord_flip() +
scale_y_continuous(breaks = seq(0, 100, 5), minor_breaks = seq(0, 100, 1)) +
scale_fill_brewer(palette = "Dark2", label = c("Guest", "Host")) +
labs(
title = glue::glue("The Incomparable — {current_year}"),
subtitle = "Panelists by # of Appearances",
x = "Panelist", y = "# of Appearances", fill = "Role"
)
All Time Stats
Here are some rankings of panelists (including hosts) across different metrics / subsets.
Special bonus episodes are not included (507b, 506b, 337b, 173z).
By Number of Appearances
Nothing special, just “appears in episode” counts.
Code
|>
mothership_long # Filter out special episodes containing letters
filter(!str_detect(number, "[a-z]$")) |>
count(person, role) |>
pivot_wider(names_from = role, values_from = n, values_fill = 0) |>
mutate(
person = factor(person),
total = guest + host,
total_perc = scales::label_percent(.accuracy = .1)(total / nrow(mothership_wide)),
rank = rank(-total, ties.method = "min")
|>
) arrange(desc(total)) |>
select(rank, person, host, guest, total, total_perc) |>
reactable(
columns = list(
rank = colDef(name = "Rank", sortable = TRUE),
person = colDef(name = "Person", filterable = TRUE, sortable = TRUE),
host = colDef(name = "Host", sortable = TRUE),
guest = colDef(name = "Guest", sortable = TRUE),
total = colDef(name = "Total", sortable = TRUE),
total_perc = colDef(name = "Total (%)", sortable = TRUE)
) )