Encontre o máximo por grupo e retorne outra coluna

Dada a seguinte matriz de teste:

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

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

Aqui eu quero encontrar o máximo por grupo e, em seguida, retornar o nome dessa coluna. Por exemplo. Eu esperaria 1, A e 2, C. Se houver um empate com max, o primeiro jogo seria bom. Depois disso, eu teria que anexar isso à matriz com uma nova coluna "GroupName"

Como posso fazer isso?

Eu já tenho a combinação Group, Max Value:

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

A maneira que eu usei para adicionar colunas à minha matriz funciona assim (vamos supor que também já existe uma matriz groupNames com GroupID, combinações Name):

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

questionAnswers(4)

yourAnswerToTheQuestion