library(tidyverse)
df %>%
arrange(desc(threshold)) %>%
mutate(flag = threshold != lead(threshold),
flag = ifelse(is.na(flag), 0, flag),
label = paste0(">=", threshold),
count = row_number(),
sum = cumsum(if_bad)) %>%
filter(flag == 1) %>%
select(threshold = label, count, sum)