Исходя из условия, мы можем slice
строк из конкатенации двух индексов which.max
, получить unique
(если есть только случаи, когда порог больше 4, тогда оба условия получают одинаковый индекс)
df %>%
group_by(loc.id) %>%
filter(any(threshold >= 2)) %>% # additional check
#slice(unique(c(which.max(threshold > 2), which.max(threshold > 4))))
# based on the expected output
slice(unique(c(which.max(threshold >= 2), which.max(threshold >= 4))))
# A tibble: 4 x 2
# Groups: loc.id [2]
# loc.id threshold
# <int> <int>
#1 1 2
#2 1 4
#3 2 2
#4 2 4
Обратите внимание, что могут быть группы, в которых нет значений в пороге, большем или равном 2. Мы можем оставить только эти группы