Finde max pro Gruppe und gib eine weitere Spalte zurück

Ausgehend von der folgenden Testmatrix:

testMatrix <- matrix( c(1,1,2,10,20,30,300,100,200,"A","B","C"), 3, 4)

colnames(testMatrix) <- c("GroupID", "ElementID", "Value", "Name")

Hier möchte ich das Maximum pro Gruppe finden und dann den Namen dieser Spalte zurückgeben. Z.B. Ich würde 1, A und 2, C erwarten. Wenn es ein Unentschieden mit max gibt, wäre das erste Match in Ordnung. Danach müsste ich diese mit einer neuen Spalte "Gruppenname" an die Matrix anhängen

Wie kann ich das machen?

Ich habe bereits die Kombination Group, Max Value:

groupMax <- aggregate (as.numeric(testMatrix[,3]), by=list( testMatrix[,1] ), max )

Die Art und Weise, wie ich Spalten zu meiner Matrix hinzugefügt habe, funktioniert wie folgt (nehmen wir an, dass es auch bereits eine Matrix groupNames mit GroupID und Namenskombinationen gibt):

testMatrix <- cbind ( testMatrix, groupNames[match( testMatrix[,1], groupNames[,1] ), 2] ) 

Antworten auf die Frage(4)

Ihre Antwort auf die Frage