# Load required library
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.4 ✔ readr 2.1.5
## ✔ forcats 1.0.0 ✔ stringr 1.5.2
## ✔ ggplot2 4.0.0 ✔ tibble 3.3.0
## ✔ lubridate 1.9.4 ✔ tidyr 1.3.1
## ✔ purrr 1.1.0
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
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(), # Force as 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()
)
# Load the datasets
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)
# Rename columns for readability
trans1 <- trans %>%
rename(
year = voyage_dates__imp_arrival_at_port_of_dis_sparsedate__year,
slaves_embarked = voyage_slaves_numbers__imp_total_num_slaves_embarked,
slaves_disembarked = voyage_slaves_numbers__imp_total_num_slaves_disembarked,
middle_passage_days = voyage_dates__length_middle_passage_days,
voyage_duration = voyage_dates__imp_length_home_to_disembark,
crew_first_landing = voyage_crew__crew_first_landing,
crew_outset = voyage_crew__crew_voyage_outset,
tonnage = voyage_ship__tonnage_mod,
cash_price = voyage_slaves_numbers__imp_jamaican_cash_price,
mortality_ratio = voyage_slaves_numbers__imp_mortality_ratio,
pct_women = voyage_slaves_numbers__percentage_women_among_embarked_slaves,
vessel_outcome = voyage_outcome__vessel_captured_outcome__name,
nationality = voyage_ship__imputed_nationality__name,
region_begin = voyage_itinerary__imp_region_voyage_begin__name,
rig_vessel = voyage_ship__rig_of_vessel__name,
voyage_end_place = voyage_itinerary__place_voyage_ended__name,
purchase_month = voyage_dates__slave_purchase_began_sparsedate__month,
pct_men = voyage_slaves_numbers__percentage_men,
completion_month = voyage_dates__voyage_completed_sparsedate__month,
region_return = voyage_itinerary__region_of_return__name,
pct_boy = voyage_slaves_numbers__percentage_boy,
principal_dis_region = voyage_itinerary__imp_principal_region_slave_dis__name,
principal_purchase_region = voyage_itinerary__imp_principal_region_of_slave_purchase__name,
departure_africa_month = voyage_dates__date_departed_africa_sparsedate__month,
voyage_begin_month = voyage_dates__voyage_began_sparsedate__month,
port_begin = voyage_itinerary__imp_port_voyage_begin__name,
first_dis_month = voyage_dates__first_dis_of_slaves_sparsedate__month,
dis_broad = voyage_itinerary__imp_broad_region_slave_dis__name,
pct_girl = voyage_slaves_numbers__percentage_girl,
particular_outcome = voyage_outcome__particular_outcome__name,
principal_dis_port = voyage_itinerary__imp_principal_port_slave_dis__name,
pct_child = voyage_slaves_numbers__percentage_child,
pct_women_alt = voyage_slaves_numbers__percentage_women,
last_landing_month = voyage_dates__departure_last_place_of_landing_sparsedate__month,
owner_outcome = voyage_outcome__outcome_owner__name,
slaves_outcome = voyage_outcome__outcome_slaves__name,
principal_purchase_place = voyage_itinerary__imp_principal_place_of_slave_purchase__name,
resistance = voyage_outcome__resistance__name,
pct_male = voyage_slaves_numbers__percentage_male,
pct_female = voyage_slaves_numbers__percentage_female,
begin_broad = voyage_itinerary__imp_broad_region_voyage_begin__name,
purchase_broad = voyage_itinerary__imp_broad_region_of_slave_purchase__name
)
intra1 <- intra %>%
rename(
year = voyage_dates__imp_arrival_at_port_of_dis_sparsedate__year,
slaves_embarked = voyage_slaves_numbers__imp_total_num_slaves_embarked,
slaves_disembarked = voyage_slaves_numbers__imp_total_num_slaves_disembarked,
middle_passage_days = voyage_dates__length_middle_passage_days,
voyage_duration = voyage_dates__imp_length_home_to_disembark,
crew_first_landing = voyage_crew__crew_first_landing,
crew_outset = voyage_crew__crew_voyage_outset,
tonnage = voyage_ship__tonnage_mod,
cash_price = voyage_slaves_numbers__imp_jamaican_cash_price,
mortality_ratio = voyage_slaves_numbers__imp_mortality_ratio,
pct_women = voyage_slaves_numbers__percentage_women_among_embarked_slaves,
vessel_outcome = voyage_outcome__vessel_captured_outcome__name,
nationality = voyage_ship__imputed_nationality__name,
region_begin = voyage_itinerary__imp_region_voyage_begin__name,
rig_vessel = voyage_ship__rig_of_vessel__name,
voyage_end_place = voyage_itinerary__place_voyage_ended__name,
purchase_month = voyage_dates__slave_purchase_began_sparsedate__month,
pct_men = voyage_slaves_numbers__percentage_men,
completion_month = voyage_dates__voyage_completed_sparsedate__month,
region_return = voyage_itinerary__region_of_return__name,
pct_boy = voyage_slaves_numbers__percentage_boy,
principal_dis_region = voyage_itinerary__imp_principal_region_slave_dis__name,
principal_purchase_region = voyage_itinerary__imp_principal_region_of_slave_purchase__name,
departure_africa_month = voyage_dates__date_departed_africa_sparsedate__month,
voyage_begin_month = voyage_dates__voyage_began_sparsedate__month,
port_begin = voyage_itinerary__imp_port_voyage_begin__name,
first_dis_month = voyage_dates__first_dis_of_slaves_sparsedate__month,
dis_broad = voyage_itinerary__imp_broad_region_slave_dis__name,
pct_girl = voyage_slaves_numbers__percentage_girl,
particular_outcome = voyage_outcome__particular_outcome__name,
principal_dis_port = voyage_itinerary__imp_principal_port_slave_dis__name,
pct_child = voyage_slaves_numbers__percentage_child,
pct_women_alt = voyage_slaves_numbers__percentage_women,
last_landing_month = voyage_dates__departure_last_place_of_landing_sparsedate__month,
owner_outcome = voyage_outcome__outcome_owner__name,
slaves_outcome = voyage_outcome__outcome_slaves__name,
principal_purchase_place = voyage_itinerary__imp_principal_place_of_slave_purchase__name,
resistance = voyage_outcome__resistance__name,
pct_male = voyage_slaves_numbers__percentage_male,
pct_female = voyage_slaves_numbers__percentage_female,
begin_broad = voyage_itinerary__imp_broad_region_voyage_begin__name,
purchase_broad = voyage_itinerary__imp_broad_region_of_slave_purchase__name
)
# Clean and transform data for trans
trans_clean <- trans1 %>%
mutate(
year = as.integer(year),
slaves_embarked = as.numeric(slaves_embarked),
slaves_disembarked = as.numeric(slaves_disembarked)
) %>%
filter(
!is.na(slaves_disembarked) & slaves_disembarked > 0 &
slaves_outcome == "Slaves disembarked in Americas"
) %>%
mutate(
decade = floor(year / 10) * 10,
estimated_deaths = slaves_embarked - slaves_disembarked,
is_us = dis_broad == "Mainland North America" | principal_dis_port == "New Orleans"
) %>%
mutate(source_type = "Trans-Atlantic")
# Clean and transform data for intra
intra_clean <- intra1 %>%
mutate(
year = as.integer(year),
slaves_embarked = as.numeric(slaves_embarked),
slaves_disembarked = as.numeric(slaves_disembarked)
) %>%
filter(
!is.na(slaves_disembarked) & slaves_disembarked > 0 &
slaves_outcome == "Slaves disembarked in Americas"
) %>%
mutate(
decade = floor(year / 10) * 10,
estimated_deaths = slaves_embarked - slaves_disembarked,
is_us = dis_broad == "Mainland North America" | principal_dis_port == "New Orleans"
) %>%
mutate(source_type = "Intra-American")
combined_data <- bind_rows(trans_clean, intra_clean)
total_us <- combined_data %>%
filter(is_us == TRUE) %>%
summarise(total_disembarked_us = sum(slaves_disembarked, na.rm = TRUE)) %>%
pull(total_disembarked_us)
print(paste("Total slaves imported to the US:", total_us))
## [1] "Total slaves imported to the US: 419492"
total_africa_embarked <- trans_clean %>%
summarise(total_embarked_africa = sum(slaves_embarked, na.rm = TRUE)) %>%
pull(total_embarked_africa)
proportion_us <- total_us / total_africa_embarked
print(paste("Proportion of all slaves taken from Africa that went to the US:", round(proportion_us, 4)))
## [1] "Proportion of all slaves taken from Africa that went to the US: 0.0516"
us_imports_by_decade <- combined_data %>%
filter(is_us == TRUE) %>%
group_by(decade) %>%
summarise(total_disembarked = sum(slaves_disembarked, na.rm = TRUE), .groups = "drop")
ggplot(us_imports_by_decade, aes(x = factor(decade), y = total_disembarked)) +
geom_bar(stat = "identity", fill = "steelblue") +
theme_minimal() +
labs(title = "Slave Imports to the US by Decade",
x = "Decade",
y = "Total Slaves Disembarked") +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
# Imports the U.S by region & decade
us_data <- combined_data %>%
filter(is_us == TRUE) %>%
mutate(state = case_when(
str_detect(principal_dis_port, "Charleston") ~ "South Carolina",
str_detect(principal_dis_port, "Savannah") ~ "Georgia",
str_detect(principal_dis_port, "New Orleans") ~ "Louisiana",
str_detect(principal_dis_port, "Baltimore") ~ "Maryland",
str_detect(principal_dis_port, "Richmond") ~ "Virginia",
str_detect(principal_dis_port, "Norfolk") ~ "Virginia",
str_detect(principal_dis_port, "Alexandria") ~ "Virginia",
str_detect(principal_dis_port, "Mobile") ~ "Alabama",
str_detect(principal_dis_port, "Pensacola") ~ "Florida",
str_detect(principal_dis_port, "Galveston") ~ "Texas",
str_detect(principal_dis_port, "New York") ~ "New York",
str_detect(principal_dis_port, "Philadelphia") ~ "Pennsylvania",
str_detect(principal_dis_port, "Boston") ~ "Massachusetts",
str_detect(principal_dis_port, "Newport|Providence|Bristol") ~ "Rhode Island",
TRUE ~ principal_dis_region # Fallback to region if port not matched
))
us_by_decade_region_port_state <- us_data %>%
group_by(decade, principal_dis_region, principal_dis_port, state) %>%
summarise(total_disembarked = sum(slaves_disembarked, na.rm = TRUE), .groups = "drop") %>%
arrange(decade, desc(total_disembarked))
# Display table
print("US Imports by Decade, Region, Port, and Approximate State:")
## [1] "US Imports by Decade, Region, Port, and Approximate State:"
print(us_by_decade_region_port_state)
## # A tibble: 330 × 5
## decade principal_dis_region principal_dis_port state total_disembarked
## <dbl> <chr> <chr> <chr> <dbl>
## 1 1610 Virginia Hampton Virg… 29
## 2 1620 Virginia Virginia, port unspecifi… Virg… 3
## 3 1630 New York New York New … 53
## 4 1630 Virginia Virginia, port unspecifi… Virg… 13
## 5 1630 Massachusetts Boston Mass… 7
## 6 1640 New York New York New … 69
## 7 1640 Virginia Virginia, port unspecifi… Virg… 12
## 8 1650 New York New York New … 477
## 9 1650 Virginia Virginia, port unspecifi… Virg… 125
## 10 1650 Maryland Maryland, port unspecifi… Mary… 5
## # ℹ 320 more rows
# Faceted bar plot by state
ggplot(us_by_decade_region_port_state, aes(x = factor(decade), y = total_disembarked, fill = state)) +
geom_bar(stat = "identity") +
facet_wrap(~ state, scales = "free_y") +
theme_minimal() +
labs(title = "US Slave Imports by Decade and Approximate State",
x = "Decade",
y = "Total Slaves Disembarked") +
theme(axis.text.x = element_text(angle = 45, hjust = 1),
legend.position = "none")
The united states received roughly 5 percent of all slaves from that were embarked from Africa.
The slave imports peaked in the early 18 and 19th centuries which is shown through the bar plots.
The top three regions where slaved were imported were; South Carolina, Louisiana, and Virginia This was shown through the bar charts about imports by decade and region
The United States account for a small proportion of all the slaves that disembarked from Africa as others went to south america and caribbean