Federal judges and the Ivy League

Suggested answers

Application exercise
Answers
Modified

February 15, 2024

Important

These are suggested answers. This document should be used as reference only, it’s not designed to be an exhaustive key.

library(tidyverse)
library(scales)
library(skimr)

Article III judges

The Federal Judicial Center maintains detailed biographical data on all Article III judges in the United States.1 This data is organized in a relational structure, with tables organized by:

  • Demographics: Basic biographical information on each judge
  • Federal judicial service: Information on each judge’s service in the federal judiciary
  • Other federal service: Information on each judge’s service in other federal judicial offices
  • Education: Information on each judge’s education
  • Professional career: Information on each judge’s professional career
  • Other nominations/recess appointments: Information on individual’s other nominations2 and recess appointments3

Data

The data is available in fjc-judges.RData. .RData files are binary files that store one or more R objects. We can load the data using the load function.

load("data/fjc-judges.RData")

Relational structure

The data is organized in a relational structure. This means that the data is organized in multiple tables, and the tables are linked by common identifiers. For example, the demographics table contains basic biographical information on each judge, and the education table contains information on each judge’s education. The two tables are linked by the nid variable, which is a unique identifier for each judge.

Tip

Every table contains a nid column, which is a unique identifier for each judge. For some tables such as demographics, there is one row for each judge. In other tables judges may have multiple rows, such as education (where each row represents a degree earned by the judge) or service_fjs (where each row represents a single appointment to the judiciary, and some judges have been appointed to multiple positions). For tables where judges appear in multiple rows, the sequence column uniquely identifies each row for a given judge. For example, the first appointment to the judiciary for a judge will have sequence = 1, the second appointment will have sequence = 2, and so on. While they have the same name, these columns do not necessary represent the same variable across tables.

Ivy League influence

In recent decades, scholars and policymakers have expressed concern about the lack of diversity in political institutions such as the federal judiciary. One aspect of this concern is the overrepresentation of graduates from a small number of elite colleges and universities.4 5 6

The Ivy League is a group of eight private colleges and universities in the northeastern United States. The Ivy League is known for its academic excellence and social prestige, and include:

  • Brown University
  • Columbia University
  • Cornell University
  • Dartmouth College
  • Harvard University
  • University of Pennsylvania
  • Princeton University
  • Yale University

We will use this data to answer the question: What percentage of judges appointed to the federal judiciary attended an Ivy League school?

To clarify the scope of our analysis, we will focus on judges appointed to the federal judiciary since 1945 (the post-World War II era). Furthermore we will limit our analysis to judges appointed to the Courts of Appeals and the District Courts.7 And finally, we want to examine how this trend has evolved over time by examining the percentage of Ivy League graduates among judges appointed in each presidential administration. This will also allow us to consider the role of presidential partisanship. Are Democratic or Republican presidents more likely to make appointments from the Ivy League?

Joining the data

Your turn: First we need to identify the relevant tables for our analysis. Use the skimr::skim() function to examine the structure of the all the tables in the fjc-judges.RData file. Based on the output of the skim() function, identify the tables that contain the relevant information for our analysis, an appropriate *_join() function to combine them for our analysis, and the relevant key column(s).

skim(demographics)
skim(service_fjs)
skim(service_other)
skim(education)
skim(professional)
skim(other_appointments)
left_join(
  x = education,
  y = service_fjs,
  by = join_by(nid, judge_name),
  relationship = "many-to-many"
)
# A tibble: 9,241 × 35
       nid sequence.x judge_name school degree degree_year sequence.y court_type
     <dbl>      <dbl> <chr>      <chr>  <chr>        <dbl>      <dbl> <chr>     
 1  1.39e6          1 Abrams, R… Corne… B.A.          1990          1 U.S. Dist…
 2  1.39e6          2 Abrams, R… Yale … J.D.          1993          1 U.S. Dist…
 3  1.38e6          1 Abruzzo, … Brook… LL.B.         1910          1 U.S. Dist…
 4  1.37e7          1 Abudu, Na… Colum… B.A.          1996          1 U.S. Cour…
 5  1.37e7          2 Abudu, Na… Tulan… J.D.          1999          1 U.S. Cour…
 6  1.38e6          1 Acheson, … Washi… B.A.          1845          1 U.S. Dist…
 7  1.38e6          1 Acheson, … Washi… B.A.          1845          2 U.S. Circ…
 8  1.38e6          1 Acheson, … Washi… B.A.          1845          3 U.S. Cour…
 9  1.38e6          2 Acheson, … Read … <NA>          1852          1 U.S. Dist…
10  1.38e6          2 Acheson, … Read … <NA>          1852          2 U.S. Circ…
# ℹ 9,231 more rows
# ℹ 27 more variables: court_name <chr>, appointment_title <chr>,
#   appointing_president <chr>, party_of_appointing_president <chr>,
#   reappointing_president <chr>, party_of_reappointing_president <chr>,
#   aba_rating <chr>, seat_id <chr>, statute_authorizing_new_seat <chr>,
#   recess_appointment_date <date>, nomination_date <date>,
#   committee_referral_date <date>, hearing_date <date>, …

We should use education to determine if a judge earned a degree from an Ivy League institution and service_fjs to determine the type of court to which the judge was appointed. We can use a left_join() or inner_join() to combine these tables. The appropriate key columns are nid and judge_name. sequence is not a key column since it represents different variables in each table.

Determine if a judge has an Ivy League degree

We will use the education table to determine if a judge earned a degree from an Ivy League institution. The school column contains the name of the school where the judge earned their degree. Unfortunately the names of the schools are not standardized, so we will need to use a list of Ivy League schools to identify which judges attended an Ivy League institution.

Your turn: We need to know for every judge whether or not at least one of their degrees (e.g. undergraduate, law, etc.) was earned at an Ivy League institution. Create a data frame with one-row-per-judge and a variable ivy_league that is TRUE if the judge earned a degree from an Ivy League institution and FALSE otherwise.

Tip

Unfortunately the names of schools in the database are not standardized, so we need to use a list of Ivy League schools to identify which judges attended an Ivy League institution. You can use this character vector to identify Ivy League schools:

ivy_league <- c(
  # Brown
  "Brown University", "Rhode Island College (now Brown University)",
  # Columbia
  "Columbia University", "Columbia Law School", "King's College (now Columbia University)",
  # Cornell
  "Cornell University", "Cornell Law School", "Cornell University Department of Law",
  # Dartmouth
  "Dartmouth College",
  # Harvard
  "Harvard Law School", "Harvard University", "Harvard University, Kennedy School of Government",
  "Harvard College",
  # UPenn
  "University of Pennsylvania", "University of Pennsylvania, Wharton School",
  "College of Philadelphia (now University of Pennsylvania)",
  "University of Pennsylvania Law School (now Carey Law School)",
  # Princeton
  "Princeton University", "College of New Jersey (now Princeton University)",
  "Princeton University, Woodrow Wilson School of Public and International Affairs (now Princeton School of Public and International Affairs)",
  # Yale
  "Yale University", "Yale College", "Yale Law School", "Yale School of Architecture",
  "Yale School of Organization and Management"
)
ivy_league <- c(
  # Brown
  "Brown University", "Rhode Island College (now Brown University)",
  # Columbia
  "Columbia University", "Columbia Law School", "King's College (now Columbia University)",
  # Cornell
  "Cornell University", "Cornell Law School", "Cornell University Department of Law",
  # Dartmouth
  "Dartmouth College",
  # Harvard
  "Harvard Law School", "Harvard University", "Harvard University, Kennedy School of Government",
  "Harvard College",
  # UPenn
  "University of Pennsylvania", "University of Pennsylvania, Wharton School",
  "College of Philadelphia (now University of Pennsylvania)",
  "University of Pennsylvania Law School (now Carey Law School)",
  # Princeton
  "Princeton University", "College of New Jersey (now Princeton University)",
  "Princeton University, Woodrow Wilson School of Public and International Affairs (now Princeton School of Public and International Affairs)",
  # Yale
  "Yale University", "Yale College", "Yale Law School", "Yale School of Architecture",
  "Yale School of Organization and Management"
)

education |>
  # determine if a judge earned a degree from an Ivy League institution
  mutate(ivy_league = school %in% ivy_league) |>
  # summarize the data frame so we have exactly one row per judge
  summarize(
    ivy_league = mean(ivy_league) > 0,
    .by = c(nid, judge_name)
  )
1
We could also have used group_by(nid, judge_name) prior to summarize(ivy_league = mean(ivy_league) > 0). One benefit to using .by is that it automatically leaves the resulting data frame ungrouped.
# A tibble: 3,938 × 3
        nid judge_name                ivy_league
      <dbl> <chr>                     <lgl>     
 1  1393931 Abrams, Ronnie            TRUE      
 2  1376976 Abruzzo, Matthew T.       FALSE     
 3 13651551 Abudu, Nancy Gbana        TRUE      
 4  1376981 Acheson, Marcus Wilson    FALSE     
 5  1376986 Acker, William Marsh, Jr. TRUE      
 6  1376991 Ackerman, Harold Arnold   FALSE     
 7  1376996 Ackerman, James Waldo     FALSE     
 8  1377001 Acosta, Raymond L.        FALSE     
 9  1377006 Adair, J[ackson] Leroy    FALSE     
10  1377011 Adams, Arlin Marvin       TRUE      
# ℹ 3,928 more rows

Combine with judicial appointments

Your turn: Combined the summarized education data with information on each appointment to the federal judiciary.

education |>
  mutate(ivy_league = school %in% ivy_league) |>
  summarize(
    ivy_league = mean(ivy_league) > 0,
    .by = c(nid, judge_name)
  ) |>
  # join with appointment table
  left_join(y = service_fjs)
# A tibble: 4,630 × 32
      nid judge_name ivy_league sequence court_type court_name appointment_title
    <dbl> <chr>      <lgl>         <dbl> <chr>      <chr>      <chr>            
 1 1.39e6 Abrams, R… TRUE              1 U.S. Dist… U.S. Dist… Judge            
 2 1.38e6 Abruzzo, … FALSE             1 U.S. Dist… U.S. Dist… Judge            
 3 1.37e7 Abudu, Na… TRUE              1 U.S. Cour… U.S. Cour… Judge            
 4 1.38e6 Acheson, … FALSE             1 U.S. Dist… U.S. Dist… Judge            
 5 1.38e6 Acheson, … FALSE             2 U.S. Circ… U.S. Circ… Judge            
 6 1.38e6 Acheson, … FALSE             3 U.S. Cour… U.S. Cour… Judge            
 7 1.38e6 Acker, Wi… TRUE              1 U.S. Dist… U.S. Dist… Judge            
 8 1.38e6 Ackerman,… FALSE             1 U.S. Dist… U.S. Dist… Judge            
 9 1.38e6 Ackerman,… FALSE             1 U.S. Dist… U.S. Dist… Judge            
10 1.38e6 Ackerman,… FALSE             2 U.S. Dist… U.S. Dist… Judge            
# ℹ 4,620 more rows
# ℹ 25 more variables: appointing_president <chr>,
#   party_of_appointing_president <chr>, reappointing_president <chr>,
#   party_of_reappointing_president <chr>, aba_rating <chr>, seat_id <chr>,
#   statute_authorizing_new_seat <chr>, recess_appointment_date <date>,
#   nomination_date <date>, committee_referral_date <date>,
#   hearing_date <date>, judiciary_committee_action <chr>, …

We can combine with service_fjs to determine the type of court to which the judge was appointed, using a left_join() (or inner_join()) to combine the two tables.

Note

Since we summarized the education data, the sequence column no longer exists so we can let *left*_join() use the default by argument.

Filter the data

Your turn: Filter the data to limit our analysis to judges appointed:

  • To the Courts of Appeals and the District Courts,
  • Since 1945, and
  • By a Democratic or Republican president8
education |>
  mutate(ivy_league = school %in% ivy_league) |>
  summarize(
    ivy_league = mean(ivy_league) > 0,
    .by = c(nid, judge_name)
  ) |>
  left_join(y = service_fjs) |>
  mutate(
    year = year(commission_date)
  ) |>
  filter(
    # look at appointments between 1945 and 2023 - 2024 still in progress
    between(year, 1945, 2023),
    # look at appointments to Courts of Appeals and District Courts
    court_type %in% c(
      "U.S. Court of Appeals",
      "U.S. District Court"
    ),
    # only appointments by Democratic or Republican presidents
    party_of_appointing_president %in% c(
      "Democratic",
      "Republican"
    )
  )
# A tibble: 3,150 × 33
      nid judge_name ivy_league sequence court_type court_name appointment_title
    <dbl> <chr>      <lgl>         <dbl> <chr>      <chr>      <chr>            
 1 1.39e6 Abrams, R… TRUE              1 U.S. Dist… U.S. Dist… Judge            
 2 1.37e7 Abudu, Na… TRUE              1 U.S. Cour… U.S. Cour… Judge            
 3 1.38e6 Acker, Wi… TRUE              1 U.S. Dist… U.S. Dist… Judge            
 4 1.38e6 Ackerman,… FALSE             1 U.S. Dist… U.S. Dist… Judge            
 5 1.38e6 Ackerman,… FALSE             1 U.S. Dist… U.S. Dist… Judge            
 6 1.38e6 Acosta, R… FALSE             1 U.S. Dist… U.S. Dist… Judge            
 7 1.38e6 Adams, Ar… TRUE              1 U.S. Cour… U.S. Cour… Judge            
 8 1.38e6 Adams, He… FALSE             1 U.S. Dist… U.S. Dist… Judge            
 9 1.39e6 Adams, Jo… FALSE             1 U.S. Dist… U.S. Dist… Judge            
10 1.39e6 Adelman, … TRUE              1 U.S. Dist… U.S. Dist… Judge            
# ℹ 3,140 more rows
# ℹ 26 more variables: appointing_president <chr>,
#   party_of_appointing_president <chr>, reappointing_president <chr>,
#   party_of_reappointing_president <chr>, aba_rating <chr>, seat_id <chr>,
#   statute_authorizing_new_seat <chr>, recess_appointment_date <date>,
#   nomination_date <date>, committee_referral_date <date>,
#   hearing_date <date>, judiciary_committee_action <chr>, …

Calculate proportion of Ivy League appointments

Your turn: Calculate the proportion of judicial appointments that were Ivy League graduates, for each Courts of Appeals and District Courts, president, and presidential party.

education |>
  mutate(ivy_league = school %in% ivy_league) |>
  summarize(
    ivy_league = mean(ivy_league) > 0,
    .by = c(nid, judge_name)
  ) |>
  left_join(y = service_fjs) |>
  mutate(
    year = year(commission_date)
  ) |>
  filter(
    between(year, 1945, 2023),
    court_type %in% c(
      "U.S. Court of Appeals",
      "U.S. District Court"
    ),
    party_of_appointing_president %in% c(
      "Democratic",
      "Republican"
    )
  ) |>
  summarize(
    # calculate the proportion of Ivy League appointments
    prop_ivy_league = mean(ivy_league),
    # grouped by appointing president, court type, and party of appointing president
    .by = c(appointing_president, court_type, party_of_appointing_president)
  )
# A tibble: 29 × 4
   appointing_president court_type        party_of_appointing_…¹ prop_ivy_league
   <chr>                <chr>             <chr>                            <dbl>
 1 Barack Obama         U.S. District Co… Democratic                       0.305
 2 Joseph R. Biden      U.S. Court of Ap… Democratic                       0.590
 3 Ronald Reagan        U.S. District Co… Republican                       0.204
 4 Jimmy Carter         U.S. District Co… Democratic                       0.208
 5 Gerald Ford          U.S. District Co… Republican                       0.255
 6 Richard M. Nixon     U.S. Court of Ap… Republican                       0.391
 7 William J. Clinton   U.S. District Co… Democratic                       0.268
 8 George W. Bush       U.S. District Co… Republican                       0.163
 9 Donald J. Trump      U.S. District Co… Republican                       0.164
10 George W. Bush       U.S. Court of Ap… Republican                       0.295
# ℹ 19 more rows
# ℹ abbreviated name: ¹​party_of_appointing_president

Visualize the data

Demo: Let’s generate an initial draft of our plot. Since we want to visualize proportions, a bar chart is a reasonable starting point.

education |>
  mutate(ivy_league = school %in% ivy_league) |>
  summarize(
    ivy_league = mean(ivy_league) > 0,
    .by = c(nid, judge_name)
  ) |>
  left_join(y = service_fjs) |>
  mutate(
    year = year(commission_date)
  ) |>
  filter(
    between(year, 1945, 2023),
    court_type %in% c(
      "U.S. Court of Appeals",
      "U.S. District Court"
    ),
    party_of_appointing_president %in% c(
      "Democratic",
      "Republican"
    )
  ) |>
  summarize(
    prop_ivy_league = mean(ivy_league),
    .by = c(appointing_president, court_type, party_of_appointing_president)
  ) |>
  # standard bar plot
  ggplot(mapping = aes(
    x = appointing_president, y = prop_ivy_league,
    fill = party_of_appointing_president
  )) +
  geom_col() +
  # facet by court type, have the panels top and bottom
  facet_wrap(facets = vars(court_type), scales = "free_y", ncol = 1)

It’s a decent first step. Some things we need to improve still:

  • Reverse the axes to make it a horizontal bar chart. Ensures all presidential names are visible.
  • Logical ordering of the presidents. We should order them chronologically based on their terms in office.
  • Remove Franklin D. Roosevelt. He died in office in early 1945 and only made a couple of appointments that year, so we don’t really have enough data to justify including him on the chart.
  • Optimal color palette
  • Better labels
  • Move the legend to the top to provide more horizontal space for the plot
education |>
  mutate(ivy_league = school %in% ivy_league) |>
  summarize(
    ivy_league = mean(ivy_league) > 0,
    .by = c(nid, judge_name)
  ) |>
  left_join(y = service_fjs) |>
  arrange(commission_date) |>
  mutate(
    year = year(commission_date),
    appointing_president = fct_inorder(f = appointing_president) |>
      fct_rev()
  ) |>
  filter(
    between(year, 1945, 2023),
    court_type %in% c(
      "U.S. Court of Appeals",
      "U.S. District Court"
    ),
    party_of_appointing_president %in% c(
      "Democratic",
      "Republican"
    )
  ) |>
  summarize(
    prop_ivy_league = mean(ivy_league),
    .by = c(appointing_president, court_type, party_of_appointing_president)
  ) |>
  filter(appointing_president != "Franklin D. Roosevelt") |>
  ggplot(mapping = aes(
    x = prop_ivy_league, y = appointing_president,
    fill = party_of_appointing_president
  )) +
  geom_col() +
  scale_x_continuous(labels = label_percent()) +
  scale_fill_viridis_d(end = 0.8) +
  facet_wrap(facets = vars(court_type), scales = "free_x", ncol = 2) +
  labs(
    x = NULL,
    y = NULL,
    title = "Democratic presidents are more likely to appoint federal judges\nwith Ivy League credentials",
    subtitle = "Article III judges appointed since 1945 with an Ivy League degree",
    fill = "Party of appointing president",
    caption = "Source: Federal Judicial Service Database"
  ) +
  theme_minimal() +
  theme(legend.position = "top")
1
Reverse the axes to make it a horizontal bar chart. Ensures all presidential names are visible.
2
Logical ordering of the presidents. We should order them chronologically based on their terms in office.
3
Remove Franklin D. Roosevelt. He died in office in early 1945 and only made a couple of appointments that year, so we don’t really have enough data to justify including him on the chart.
4
Label the \(x\)-axis as percentages.
5
Use an optimized color palette. I avoided using the traditional red-blue palette associated with the Republican and Democratic parties due to accessibility concerns (e.g. colorblindness).
6
Meaningful labels.
7
A minimal theme with the legend at the top.

How does this answer our original question? We have a few key pieces of information.

  1. Judges appointed to the Courts of Appeal are more likely to have a Ivy League degree than judges appointed to the District Courts.
  2. The proportion of appointees with Ivy League degrees has (somewhat) risen over time.
  3. Since Jimmy Carter, Democratic presidents have been more likely to appoint judges with Ivy League degrees than Republican presidents.
sessioninfo::session_info()
─ Session info ───────────────────────────────────────────────────────────────
 setting  value
 version  R version 4.3.2 (2023-10-31)
 os       macOS Ventura 13.5.2
 system   aarch64, darwin20
 ui       X11
 language (EN)
 collate  en_US.UTF-8
 ctype    en_US.UTF-8
 tz       America/New_York
 date     2024-02-17
 pandoc   3.1.1 @ /Applications/RStudio.app/Contents/Resources/app/quarto/bin/tools/ (via rmarkdown)

─ Packages ───────────────────────────────────────────────────────────────────
 package     * version date (UTC) lib source
 base64enc     0.1-3   2015-07-28 [1] CRAN (R 4.3.0)
 cli           3.6.2   2023-12-11 [1] CRAN (R 4.3.1)
 colorspace    2.1-0   2023-01-23 [1] CRAN (R 4.3.0)
 digest        0.6.34  2024-01-11 [1] CRAN (R 4.3.1)
 dplyr       * 1.1.4   2023-11-17 [1] CRAN (R 4.3.1)
 evaluate      0.23    2023-11-01 [1] CRAN (R 4.3.1)
 fansi         1.0.6   2023-12-08 [1] CRAN (R 4.3.1)
 farver        2.1.1   2022-07-06 [1] CRAN (R 4.3.0)
 fastmap       1.1.1   2023-02-24 [1] CRAN (R 4.3.0)
 forcats     * 1.0.0   2023-01-29 [1] CRAN (R 4.3.0)
 generics      0.1.3   2022-07-05 [1] CRAN (R 4.3.0)
 ggplot2     * 3.4.4   2023-10-12 [1] CRAN (R 4.3.1)
 glue          1.7.0   2024-01-09 [1] CRAN (R 4.3.1)
 gtable        0.3.4   2023-08-21 [1] CRAN (R 4.3.0)
 here          1.0.1   2020-12-13 [1] CRAN (R 4.3.0)
 hms           1.1.3   2023-03-21 [1] CRAN (R 4.3.0)
 htmltools     0.5.7   2023-11-03 [1] CRAN (R 4.3.1)
 htmlwidgets   1.6.4   2023-12-06 [1] CRAN (R 4.3.1)
 jsonlite      1.8.8   2023-12-04 [1] CRAN (R 4.3.1)
 knitr         1.45    2023-10-30 [1] CRAN (R 4.3.1)
 labeling      0.4.3   2023-08-29 [1] CRAN (R 4.3.0)
 lifecycle     1.0.4   2023-11-07 [1] CRAN (R 4.3.1)
 lubridate   * 1.9.3   2023-09-27 [1] CRAN (R 4.3.1)
 magrittr      2.0.3   2022-03-30 [1] CRAN (R 4.3.0)
 munsell       0.5.0   2018-06-12 [1] CRAN (R 4.3.0)
 pillar        1.9.0   2023-03-22 [1] CRAN (R 4.3.0)
 pkgconfig     2.0.3   2019-09-22 [1] CRAN (R 4.3.0)
 purrr       * 1.0.2   2023-08-10 [1] CRAN (R 4.3.0)
 R6            2.5.1   2021-08-19 [1] CRAN (R 4.3.0)
 readr       * 2.1.5   2024-01-10 [1] CRAN (R 4.3.1)
 repr          1.1.6   2023-01-26 [1] CRAN (R 4.3.0)
 rlang         1.1.3   2024-01-10 [1] CRAN (R 4.3.1)
 rmarkdown     2.25    2023-09-18 [1] CRAN (R 4.3.1)
 rprojroot     2.0.4   2023-11-05 [1] CRAN (R 4.3.1)
 rstudioapi    0.15.0  2023-07-07 [1] CRAN (R 4.3.0)
 scales      * 1.2.1   2024-01-18 [1] Github (r-lib/scales@c8eb772)
 sessioninfo   1.2.2   2021-12-06 [1] CRAN (R 4.3.0)
 skimr       * 2.1.5   2022-12-23 [1] CRAN (R 4.3.0)
 stringi       1.8.3   2023-12-11 [1] CRAN (R 4.3.1)
 stringr     * 1.5.1   2023-11-14 [1] CRAN (R 4.3.1)
 tibble      * 3.2.1   2023-03-20 [1] CRAN (R 4.3.0)
 tidyr       * 1.3.0   2023-01-24 [1] CRAN (R 4.3.0)
 tidyselect    1.2.0   2022-10-10 [1] CRAN (R 4.3.0)
 tidyverse   * 2.0.0   2023-02-22 [1] CRAN (R 4.3.0)
 timechange    0.2.0   2023-01-11 [1] CRAN (R 4.3.0)
 tzdb          0.4.0   2023-05-12 [1] CRAN (R 4.3.0)
 utf8          1.2.4   2023-10-22 [1] CRAN (R 4.3.1)
 vctrs         0.6.5   2023-12-01 [1] CRAN (R 4.3.1)
 viridisLite   0.4.2   2023-05-02 [1] CRAN (R 4.3.0)
 withr         2.5.2   2023-10-30 [1] CRAN (R 4.3.1)
 xfun          0.41    2023-11-01 [1] CRAN (R 4.3.1)
 yaml          2.3.8   2023-12-11 [1] CRAN (R 4.3.1)

 [1] /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library

──────────────────────────────────────────────────────────────────────────────

Footnotes

  1. Article III judges are federal judges appointed under the authority of Article III of the United States Constitution. They are appointed for life and possess significant independence from the other branches of government. They include justices of the Supreme Court, as well as judges on the Courts of Appeals, the District Courts, and several other specialized courts.↩︎

  2. Including failed nominations which were never confirmed by the U.S. Senate.↩︎

  3. Individuals appointed to the judiciary while the Senate was in recess - these appointments are temporary and expire at the end of the Senate’s next session.↩︎

  4. Harvard & Yale Still Dominate as Biden Focuses on Diversifying the Judiciary↩︎

  5. Supreme Court shouldn’t be covered in Ivy, 2 lawmakers say↩︎

  6. The New Diversity Crisis in the Federal Judiciary↩︎

  7. While the Supreme Court is the most influential court in the United States, it is also the smallest, with only nine justices at any given time. The Courts of Appeals and the District Courts are the workhorses of the federal judiciary, and are the primary focus of our analysis.↩︎

  8. Some appointments in the dataset were reassignments from one judicial seat to another, and are classified under the party_of_appointing_president as “None (reassignment)”.↩︎