Мы можем использовать строки от %in%
до filter
после группировки по 'sentId` и' partner. '
library(dplyr)
df1 %>%
group_by(sentId., partner.) %>%
filter(3 %in% label.)
# A tibble: 3 x 5
# Groups: sentId. [2]
# sentId. B. label. partner. code
# <dbl> <dbl> <dbl> <dbl> <int>
#1 1 2 3 4 123
#2 1 2 2 4 124
#3 4 2 3 8 125
Или компактно с data.table
library(data.table)
setDT(df1)[, .SD[3 %in% label.], .(sentId., partner.)]
Или с base R
df1[with(df1, ave(label.==3, sentId., partner., FUN = any)),]
данные
df1 <- structure(list(sentId. = c(1, 1, 4, 7), B. = c(2, 2, 2, 3), label. = c(3,
2, 3, 2), partner. = c(4, 4, 8, 7), code = 123:126),
class = "data.frame", row.names = c(NA,
-4L))