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] )