Duplikate basierend auf der Bedingung der 2. Spalte entfernen

Ich versuche, doppelte Zeilen aus einem Datenrahmen zu entfernen, basierend auf dem Maximalwert in einer anderen Spalte

So, für den Datenrahmen:

df<-data.frame (rbind(c("a",2,3),c("a",3,4),c("a",3,5),c("b",1,3),c("b",2,6),c("r",4,5))
  colnames(df)<-c("id","val1","val2")

id val1 val2

  a    2    3

  a    3    4

  a    3    5

  b    1    3

  b    2    6

  r    4    5

Ich möchte alle Duplikate nach ID entfernen, mit der Bedingung, dass sie für die entsprechenden Zeilen nicht den Maximalwert für val2 haben.

Damit sollte der Datenrahmen wie folgt aussehen:

  a    3    5

  b    2    6

  r    4    5

-> entferne alle Duplikate, behalte aber die Zeile mit dem Maximalwert für df $ val2 für die Teilmenge (df, df $ id == "a")

Antworten auf die Frage(3)

Ihre Antwort auf die Frage