What is the magnitude of the CEO–worker pay gap among selected large low-wage employers, and what does this imply for fairness, worker well-being, and organizational ethics?
We focus on:
CEO pay
Median worker pay
CEO-to-worker pay ratios
The most extreme outliers
This dataset is manually created from public reporting on CEO pay, median worker pay, and CEO-to-worker pay ratios for selected large low-wage employers.
library(tidyverse)
df <- read_csv("data/ips_low_wage_100.csv")
df
## # A tibble: 5 × 4
## company ceo_pay worker_pay pay_ratio
## <chr> <dbl> <dbl> <dbl>
## 1 Average Low-Wage 100 17200000 35570 632
## 2 Starbucks 95800000 15000 6666
## 3 Walmart 25600000 27000 948
## 4 McDonalds 20000000 14000 1428
## 5 Target 19000000 25000 760
The dataset is prepared by converting pay values and ratios into numeric format so they can be analyzed and visualized without errors.
df <- df %>%
mutate(
ceo_pay = as.numeric(ceo_pay), worker_pay = as.numeric(worker_pay), pay_ratio = as.numeric(pay_ratio)
)
df
## # A tibble: 5 × 4
## company ceo_pay worker_pay pay_ratio
## <chr> <dbl> <dbl> <dbl>
## 1 Average Low-Wage 100 17200000 35570 632
## 2 Starbucks 95800000 15000 6666
## 3 Walmart 25600000 27000 948
## 4 McDonalds 20000000 14000 1428
## 5 Target 19000000 25000 760
We analyze the CEO-to-worker pay gap by summarizing key statistics, identifying extreme values, and comparing CEO pay to worker pay across the sample.
summary(df)
## company ceo_pay worker_pay pay_ratio
## Length:5 Min. :17200000 Min. :14000 Min. : 632
## Class :character 1st Qu.:19000000 1st Qu.:15000 1st Qu.: 760
## Mode :character Median :20000000 Median :25000 Median : 948
## Mean :35520000 Mean :23314 Mean :2087
## 3rd Qu.:25600000 3rd Qu.:27000 3rd Qu.:1428
## Max. :95800000 Max. :35570 Max. :6666
df %>%
arrange(desc(pay_ratio)) %>%
slice(1)
## # A tibble: 1 × 4
## company ceo_pay worker_pay pay_ratio
## <chr> <dbl> <dbl> <dbl>
## 1 Starbucks 95800000 15000 6666
df %>%
arrange(pay_ratio) %>%
slice(1)
## # A tibble: 1 × 4
## company ceo_pay worker_pay pay_ratio
## <chr> <dbl> <dbl> <dbl>
## 1 Average Low-Wage 100 17200000 35570 632
df %>%
summarise(
avg_ceo_pay = mean(ceo_pay),
avg_worker_pay = mean(worker_pay),
avg_ratio = mean(pay_ratio)
)
## # A tibble: 1 × 3
## avg_ceo_pay avg_worker_pay avg_ratio
## <dbl> <dbl> <dbl>
## 1 35520000 23314 2087.
df %>%
mutate(multiplier = ceo_pay / worker_pay) %>%
summarise(avg_multiplier = mean(multiplier))
## # A tibble: 1 × 1
## avg_multiplier
## <dbl>
## 1 2001.
df %>%
summarise(
ratio_range = max(pay_ratio) - min(pay_ratio),
ceo_pay_range = max(ceo_pay) - min(ceo_pay),
worker_pay_range = max(worker_pay) - min(worker_pay)
)
## # A tibble: 1 × 3
## ratio_range ceo_pay_range worker_pay_range
## <dbl> <dbl> <dbl>
## 1 6034 78600000 21570
We interpret the results and outline the implications of the CEO‑to‑worker pay gap based on the analysis and visualizations.
The analysis and visualizations show a substantial imbalance between CEO compensation and median worker pay, even within this small dataset. The extreme outlier at the top of the distribution raises questions about how executive compensation is determined and whether it aligns with organizational values and stakeholder expectations. Large gaps like these can influence employee morale, retention, and perceptions of fairness, especially in industries that rely heavily on frontline labor. They also create reputational and regulatory risks as pay transparency becomes more common. Organizations facing these disparities may need to reassess how executive pay is structured, consider raising wage floors for workers, and strengthen transparency around compensation decisions. Addressing these gaps can support a more equitable and sustainable approach to compensation.