title: Find max per group and return another column
body: <p>Given the following test matrix:</p>
  
  <pre><code>testMatrix &lt;- matrix( c(1,1,2,10,20,30,300,100,200,"A","B","C"), 3, 4)
  
  colnames(testMatrix) &lt;- c("GroupID", "ElementID", "Value", "Name")
  </code></pre>
  
  <p>Here I want to find the max per group and then return the name of that column.
  E.g. I would expect 1, A and 2, C. If there is a tie with max, the first match would be fine.
  After that I would have to attach this to the matrix with a new Column "GroupName"</p>
  
  <p>How can I do this? </p>
  
  <p>I already have the Group, Max Value combination:</p>
  
  <pre><code>groupMax &lt;- aggregate (as.numeric(testMatrix[,3]), by=list( testMatrix[,1] ), max )
  </code></pre>
  
  <p>The way I used to add columns to my matrix works like this (let's assume there is also already a matrix groupNames with GroupID, Name combinations):</p>
  
  <pre><code>testMatrix &lt;- cbind ( testMatrix, groupNames[match( testMatrix[,1], groupNames[,1] ), 2] ) 
  </code></pre>