Here is how you can count the distinct values in a group, so that would tell you that shop A belongs to two groups, for example:
library(dplyr)
# toy data
zone <- rep(c("A", "B", "C"), each = 3)
shop <- c(1, 2, 3, 1, 5, 7, 3, 8, 9)
df <- tibble(zone = zone, shop = shop)
df
#> # A tibble: 9 x 2
#> zone shop
#> <chr> <dbl>
#> 1 A 1
#> 2 A 2
#> 3 A 3
#> 4 B 1
#> 5 B 5
#> 6 B 7
#> 7 C 3
#> 8 C 8
#> 9 C 9
df %>%
group_by(shop) %>%
summarize(n = n_distinct(zone))
#> # A tibble: 7 x 2
#> shop n
#> * <dbl> <int>
#> 1 1 2
#> 2 2 1
#> 3 3 2
#> 4 5 1
#> 5 7 1
#> 6 8 1
#> 7 9 1
Created on 2022-06-20 by the reprex package (v1.0.0)