Вот решение с использованием пакета dplyr
-
df <- data.frame(
CHID = c(111,111,111,112,112,113,113,113,113,114),
TEAID = c(115,115,115,162,165,168,168,168,187,119),
SCORE = c(56,56,56,55,55,58,58,58,58,64)
)
group_by(df, CHID) %>% filter(n_distinct(TEAID) == 1) %>% ungroup()
# A tibble: 4 x 3
# CHID TEAID SCORE
# <dbl> <dbl> <dbl>
# 1 111 115 56.0
# 2 111 115 56.0
# 3 111 115 56.0
# 4 114 119 64.0
Вот решение без каких-либо посторонних пакетов -
df[ave(df$TEAID, df$CHID, FUN = function(x) length(unique(x))) == 1, ]
# CHID TEAID SCORE
# 1 111 115 56
# 2 111 115 56
# 3 111 115 56
# 10 114 119 64