You need a double stage groupby, firstly groupby metro and state get the count and then groupby metro and filter out count that is not equal to the max count within each metro:
data1 <- data %>% group_by(metro, State) %>% mutate(count = n()) %>%
group_by(metro) %>% filter(count == max(count))
nrow(data1)