Вы можете использовать tapply
, чтобы применить функцию к y
, сгруппированную по sl
sl_y0 <- with(mydata, tapply(y, sl, function(y) all(y == 0)))
names(sl_y0)[sl_y0]
# [1] "585" "651"
Или с помощью dplyr
library(dplyr)
mydata %>%
group_by(sl) %>%
summarise(ally_eq0 = all(y == 0)) %>%
filter(ally_eq0) %>%
pull(sl)
# [1] 585 651
Или data.table
library(data.table)
setDT(mydata)
mydata[, if(all(y == 0)) sl, sl][, sl]
# [1] 585 651