This works. You weren't summarising your data by the groups (year and region).
library(tidyverse)
library(ggrepel)
# your data
sus_loans_2 <- tibble::tribble(
~COMPANY, ~CURRENCY, ~CNTRY, ~YEAR, ~AMT, ~REG,
"movado_group_inc", "USD", "US", 2015L, 30000000L, "North America",
"urban_outfitters", "USD", "US", 2015L, 13960000L, "North America",
"lerner_new_york", "USD", "US", 2014L, 8200000L, "North America",
"sri_rejeki_isman_tbk", "USD", "ID", 2019L, 50000000L, "Asia",
"VF_corp", "USD", "US", 2018L, 24100000L, "North America"
)
# grouped and summarised data
sus_loans_3 <- sus_loans_2 %>%
group_by(REG, YEAR) %>%
summarise(AMT = sum(AMT))
# edited plot
ggplot(sus_loans_3, aes(x=factor(YEAR),y=AMT/1000000, fill=REG))+
geom_col(position=position_dodge()) +labs(x="Year",y="Amount, $MM",
title="Sustainability-Linked Loans: Textile Companies",
fill="Region") +
theme_minimal() +
geom_text_repel(
aes(label = stat(y), group = factor(YEAR)),
stat = 'summary', fun = sum)