library(tidyverse)
col_types_spec <- cols_only(
id = col_integer(),
voyage_id = col_integer(),
voyage_dates__imp_arrival_at_port_of_dis_sparsedate__year = col_double(),
voyage_slaves_numbers__imp_total_num_slaves_disembarked = col_double(),
voyage_slaves_numbers__imp_total_num_slaves_embarked = col_double(),
voyage_dates__length_middle_passage_days = col_double(),
voyage_dates__imp_length_home_to_disembark = col_double(),
voyage_crew__crew_first_landing = col_double(),
voyage_crew__crew_voyage_outset = col_double(),
voyage_ship__tonnage_mod = col_double(),
voyage_slaves_numbers__imp_jamaican_cash_price = col_double(),
voyage_slaves_numbers__imp_mortality_ratio = col_double(),
voyage_slaves_numbers__percentage_women_among_embarked_slaves = col_double(),
voyage_outcome__vessel_captured_outcome__name = col_character(),
voyage_ship__imputed_nationality__name = col_character(),
voyage_itinerary__imp_region_voyage_begin__name = col_character(),
voyage_ship__rig_of_vessel__name = col_character(),
voyage_itinerary__place_voyage_ended__name = col_character(),
voyage_dates__slave_purchase_began_sparsedate__month = col_double(),
voyage_slaves_numbers__percentage_men = col_double(),
voyage_dates__voyage_completed_sparsedate__month = col_double(),
voyage_itinerary__region_of_return__name = col_character(),
voyage_slaves_numbers__percentage_boy = col_double(),
voyage_itinerary__imp_principal_region_slave_dis__name = col_character(),
voyage_itinerary__imp_principal_region_of_slave_purchase__name = col_character(),
voyage_dates__date_departed_africa_sparsedate__month = col_double(),
voyage_dates__voyage_began_sparsedate__month = col_double(),
voyage_itinerary__imp_port_voyage_begin__name = col_character(),
voyage_dates__first_dis_of_slaves_sparsedate__month = col_double(),
voyage_itinerary__imp_broad_region_slave_dis__name = col_character(),
voyage_slaves_numbers__percentage_girl = col_double(),
voyage_outcome__particular_outcome__name = col_character(),
voyage_itinerary__imp_principal_port_slave_dis__name = col_character(),
voyage_slaves_numbers__percentage_child = col_double(),
voyage_slaves_numbers__percentage_women = col_double(),
voyage_dates__departure_last_place_of_landing_sparsedate__month = col_double(),
voyage_outcome__outcome_owner__name = col_character(),
voyage_outcome__outcome_slaves__name = col_character(),
voyage_itinerary__imp_principal_place_of_slave_purchase__name = col_character(),
voyage_outcome__resistance__name = col_character(),
voyage_slaves_numbers__percentage_male = col_double(),
voyage_slaves_numbers__percentage_female = col_double(),
voyage_itinerary__imp_broad_region_voyage_begin__name = col_character(),
voyage_itinerary__imp_broad_region_of_slave_purchase__name = col_character(),
voyage_sources = col_character(),
enslavers = col_character()
)
trans <- read_csv(
"https://raw.githubusercontent.com/imowerman-prog/data-3210/refs/heads/main/Data/trans-atlantic.csv",
col_types = col_types_spec
)
intra <- read_csv(
"https://raw.githubusercontent.com/imowerman-prog/data-3210/refs/heads/main/Data/intra-american.csv",
col_types = col_types_spec
)
trans <- trans %>%
rename(
year = voyage_dates__imp_arrival_at_port_of_dis_sparsedate__year,
slaves_disembarked = voyage_slaves_numbers__imp_total_num_slaves_disembarked,
slaves_embarked = voyage_slaves_numbers__imp_total_num_slaves_embarked,
dis_region = voyage_itinerary__imp_broad_region_slave_dis__name,
dis_port = voyage_itinerary__imp_principal_port_slave_dis__name,
country = voyage_ship__imputed_nationality__name
)
intra <- intra %>%
rename(
year = voyage_dates__imp_arrival_at_port_of_dis_sparsedate__year,
slaves_disembarked = voyage_slaves_numbers__imp_total_num_slaves_disembarked,
slaves_embarked = voyage_slaves_numbers__imp_total_num_slaves_embarked,
dis_region = voyage_itinerary__imp_broad_region_slave_dis__name,
dis_port = voyage_itinerary__imp_principal_port_slave_dis__name,
country = voyage_ship__imputed_nationality__name
)
names(trans)
## [1] "id"
## [2] "voyage_id"
## [3] "year"
## [4] "slaves_disembarked"
## [5] "slaves_embarked"
## [6] "voyage_dates__length_middle_passage_days"
## [7] "voyage_dates__imp_length_home_to_disembark"
## [8] "voyage_crew__crew_first_landing"
## [9] "voyage_crew__crew_voyage_outset"
## [10] "voyage_ship__tonnage_mod"
## [11] "voyage_slaves_numbers__imp_jamaican_cash_price"
## [12] "voyage_slaves_numbers__imp_mortality_ratio"
## [13] "voyage_slaves_numbers__percentage_women_among_embarked_slaves"
## [14] "voyage_outcome__vessel_captured_outcome__name"
## [15] "country"
## [16] "voyage_itinerary__imp_region_voyage_begin__name"
## [17] "voyage_ship__rig_of_vessel__name"
## [18] "voyage_itinerary__place_voyage_ended__name"
## [19] "voyage_dates__slave_purchase_began_sparsedate__month"
## [20] "voyage_slaves_numbers__percentage_men"
## [21] "voyage_dates__voyage_completed_sparsedate__month"
## [22] "voyage_itinerary__region_of_return__name"
## [23] "voyage_slaves_numbers__percentage_boy"
## [24] "voyage_itinerary__imp_principal_region_slave_dis__name"
## [25] "voyage_itinerary__imp_principal_region_of_slave_purchase__name"
## [26] "voyage_dates__date_departed_africa_sparsedate__month"
## [27] "voyage_dates__voyage_began_sparsedate__month"
## [28] "voyage_itinerary__imp_port_voyage_begin__name"
## [29] "voyage_dates__first_dis_of_slaves_sparsedate__month"
## [30] "dis_region"
## [31] "voyage_slaves_numbers__percentage_girl"
## [32] "voyage_outcome__particular_outcome__name"
## [33] "dis_port"
## [34] "voyage_slaves_numbers__percentage_child"
## [35] "voyage_slaves_numbers__percentage_women"
## [36] "voyage_dates__departure_last_place_of_landing_sparsedate__month"
## [37] "voyage_outcome__outcome_owner__name"
## [38] "voyage_outcome__outcome_slaves__name"
## [39] "voyage_itinerary__imp_principal_place_of_slave_purchase__name"
## [40] "voyage_outcome__resistance__name"
## [41] "voyage_slaves_numbers__percentage_male"
## [42] "voyage_slaves_numbers__percentage_female"
## [43] "voyage_itinerary__imp_broad_region_voyage_begin__name"
## [44] "voyage_itinerary__imp_broad_region_of_slave_purchase__name"
## [45] "voyage_sources"
## [46] "enslavers"
trans <- trans %>%
mutate(
year = as.integer(year),
slaves_embarked = as.numeric(slaves_embarked),
slaves_disembarked = as.numeric(slaves_disembarked)
)
intra <- intra %>%
mutate(
year = as.integer(year),
slaves_embarked = as.numeric(slaves_embarked),
slaves_disembarked = as.numeric(slaves_disembarked)
)
trans <- trans %>%
filter(!is.na(slaves_disembarked), slaves_disembarked > 0)
intra <- intra %>%
filter(!is.na(slaves_disembarked), slaves_disembarked > 0)
trans <- trans %>%
mutate(
decade = floor(year/10)*10,
estimated_deaths = slaves_embarked - slaves_disembarked,
is_us = dis_region == "Mainland North America" | dis_port == "New Orleans"
)
intra <- intra %>%
mutate(
decade = floor(year/10)*10,
estimated_deaths = slaves_embarked - slaves_disembarked,
is_us = dis_region == "Mainland North America" | dis_port == "New Orleans"
)
trans$source_type <- "Trans-Atlantic"
intra$source_type <- "Intra-American"
combined <- bind_rows(trans, intra)
us_total <- combined %>%
filter(is_us == TRUE) %>%
summarise(`Total Slaves in the US` = sum(slaves_disembarked, na.rm = TRUE))
us_total
## # A tibble: 1 × 1
## `Total Slaves in the US`
## <dbl>
## 1 439667
total_africa <- sum(trans$slaves_embarked, na.rm = TRUE)
total_africa
## [1] 10575764
proportion_percent <- (us_total$`Total Slaves in the US` / total_africa) * 100
proportion_percent
## [1] 4.157307
us_decade <- combined %>%
filter(is_us == TRUE) %>%
group_by(decade) %>%
summarise(total_slaves = sum(slaves_disembarked, na.rm = TRUE))
ggplot(us_decade, aes(x = decade, y = total_slaves)) +
geom_col() +
labs(
title = "Slave Imports to the United States by Decade",
x = "Decade",
y = "Number of Enslaved Individuals"
)
us_region_port <- combined %>%
filter(is_us == TRUE) %>%
group_by(decade, dis_region, dis_port) %>%
summarise(total_slaves = sum(slaves_disembarked, na.rm = TRUE), .groups = "drop")
us_region_port
## # A tibble: 377 × 4
## decade dis_region dis_port total_slaves
## <dbl> <chr> <chr> <dbl>
## 1 1610 Mainland North America Hampton 29
## 2 1620 Mainland North America Virginia, port unspecified 3
## 3 1630 Mainland North America Boston 7
## 4 1630 Mainland North America New York 53
## 5 1630 Mainland North America Virginia, port unspecified 13
## 6 1640 Mainland North America New York 69
## 7 1640 Mainland North America Virginia, port unspecified 435
## 8 1650 Mainland North America Maryland, port unspecified 5
## 9 1650 Mainland North America New York 477
## 10 1650 Mainland North America Virginia, port unspecified 469
## # ℹ 367 more rows
us_region_port <- combined %>%
filter(is_us == TRUE) %>%
mutate(state = case_when(
dis_port %in% c("New Orleans") ~ "Louisiana",
dis_port %in% c("Charleston") ~ "South Carolina",
dis_port %in% c("Savannah") ~ "Georgia",
dis_port %in% c("Baltimore", "Annapolis") ~ "Maryland",
dis_port %in% c("New York") ~ "New York",
dis_port %in% c("Boston") ~ "Massachusetts",
TRUE ~ "Other"
))
us_state <- us_region_port %>%
group_by(decade, state) %>%
summarise(total_slaves = sum(slaves_disembarked, na.rm = TRUE), .groups = "drop")
ggplot(us_state, aes(x = decade, y = total_slaves)) +
geom_col() +
facet_wrap(~ state) +
labs(
title = "Slave Imports to the US by State and Decade",
x = "Decade",
y = "Number of Enslaved Individuals"
)
country_table <- trans %>%
group_by(decade, country) %>%
summarise(total_embarked = sum(slaves_embarked, na.rm = TRUE), .groups = "drop")
country_table
## # A tibble: 229 × 3
## decade country total_embarked
## <dbl> <chr> <dbl>
## 1 1510 0 223
## 2 1510 Portugal / Brazil 624
## 3 1510 Spain / Uruguay 144
## 4 1520 0 597
## 5 1520 Spain / Uruguay 1043
## 6 1530 0 1777
## 7 1530 Portugal / Brazil 919
## 8 1530 Spain / Uruguay 224
## 9 1540 0 19385
## 10 1540 Portugal / Brazil 160
## # ℹ 219 more rows
After cleaning and combining the data sets, I calculated total slave imports into the United States, the share of all Africans taken from Africa who ended up in the US, and how US imports changed over time. The combined data shows 439,667 enslaved people were imported into the US, which is about 4.16% of the 10,575,764 individuals embarked from Africa in the Trans‑Atlantic trade. US imports increased from the 1600s through the early 1800s. When broken down by state (using ports to approximate states), South Carolina and Louisiana received the largest volumes, while states like Maryland, New York, Massachusetts, and Georgia received smaller amounts. This shows that US arrivals were concentrated in a few major locations. For exports from Africa, grouping by decade and ship nationality shows that countries such as Portugal/Brazil, Spain/Uruguay, Great Britain, France, and the Netherlands dominated the trade, with some voyages having unknown nationality recorded as “0.”