Вы можете count
и затем присоединиться.
library(dplyr)
df1 %>%
count(ZIP, name = "Sites") %>%
right_join(df2, by = 'ZIP') %>%
mutate(Sites = replace(Sites, is.na(Sites), 0))
# A tibble: 8 x 4
# ZIP Sites ZCTA Population
# <int> <dbl> <int> <int>
#1 60657 3 60657 82739
#2 60609 0 60609 64906
#3 60612 0 60612 33472
#4 60641 2 60641 40603
#5 60616 0 60616 48433
#6 60607 2 60607 84155
#7 60628 1 60628 92084
#8 60619 0 60619 63825
В базе R это будет:
merge(df2, aggregate(Weekend~ZIP, df1, length), all.x = TRUE)
, а затем замените NA
на 0, как обычно.