Идентификаторы фильтров, когда максимальный балл не наблюдается в r

#r #filter

#r #Фильтр

Вопрос:

Мне нужно отфильтровать id s, в которых нет maximum score точек. Вот мой пример набора данных выглядит так

 df lt;- data.frame(id = c(1,1,1,1,1, 2,2,2,2, 3,3,3,3,3, 4,4,4,4,4, 5,5,5),  score = c(0,1,2,0,1, 1,0,1,1, 0,1,2,3,3, 3,1,2,0,3, 0,1,0),  max.score = c(2,2,2,2,2, 1,1,1,1, 4,4,4,4,4, 3,3,3,3,3, 2,2,2))  gt; df  id score max.score 1 1 0 2 2 1 1 2 3 1 2 2 4 1 0 2 5 1 1 2 6 2 1 1 7 2 0 1 8 2 1 1 9 2 1 1 10 3 0 4 11 3 1 4 12 3 2 4 13 3 3 4 14 3 3 4 15 4 3 3 16 4 1 3 17 4 2 3 18 4 0 3 19 4 3 3 20 5 0 2 21 5 1 2 22 5 0 2  

В этом фрейме данных мне нужно отфильтровать s, id c(3,5) потому id max.score что в них нет s. Желаемый результат был бы:

 gt; df  id score max.score 1 3 0 4 2 3 1 4 3 3 2 4 4 3 3 4 5 3 3 4 6 5 0 2 7 5 1 2 8 5 0 2  

Есть какие-нибудь идеи? Спасибо

Комментарии:

1. Попробуй df %gt;% group_by(id) %gt;% filter(!any(score %in% max.score[1])) %gt;% ungroup

2. Как max.score константа по группам, вы можете использовать filter(!(max.score %in% score)) для сгруппированных данных.