Я борюсь с функцией фильтра (dplyr) на аккуратном фрейме данных:
data1<-data.frame("Time"=c(0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5),
"Variable"=rep(c("a","b","c","d"),6),
"Value"=c(0,1,0,0,1,1,1,1,1,3,2,3,10,1,3,7,2,1,4,2,3,1,5,13))
Я хочу отфильтровать время, когда переменная "a" равна 2, а когда переменная «а» - это как макс. Для первого случая mi код:
data1<-data1%>%
group_by(Time)%>%
filter(any(Variable=="a" & Value==2))
и работает нормально и дает мне:
Time Variable Value
2 a 2
2 b 1
2 c 4
2 d 2
Не сейчас, как могло бы быть для = max (a), я пытался с :
data1<-data1%>%
group_by(Time)%>%
filter(any(Variable=="a" & Value==max(Value)))
, но не работает (потому что max рассчитывается для всей переменной столбца) Я думаю, мне нужно что-то вроде Value = max (Value) [Variable $ a]. Фильтрованный должен действовать следующим образом:
Time Variable Value
3 a 10
3 b 1
3 c 3
3 d 7
Я предпочитаю решение с dplyr. Может ли кто-нибудь дать мне общее правило для фильтрации на tidy df с несколькими критериями?