[R] find max value in each row and return column number and column name

arun smartpink111 at yahoo.com
Fri Nov 1 18:39:06 CET 2013


Hi,
Try:

  cbind(a,do.call(rbind,apply(a,1,function(x) {data.frame(max=max(x), max.col.num=which.max(x), max.col.name=names(a)[which.max(x)],stringsAsFactors=FALSE)}))) ##assuming that unique max for each row.
A.K.


On Friday, November 1, 2013 1:05 PM, Gary Dong <pdxgary163 at gmail.com> wrote:
Dear R users,

I wonder how I can use R to identify the max value of each row, the column
number column name:

For example:

a <- data.frame(x = rnorm(4), y = rnorm(4), z = rnorm(4))

> a
           x          y          z
1 -0.7289964  0.2194702 -2.4674780
2  1.0889353  0.3167629 -0.9208548
3 -0.6374692 -1.7249049  0.6567313
4 -0.1348642  0.4507473 -1.7309010

In this data frame, I compare y and z only.

What I need:

            x                     y                     z
max                 max.col.num         max.col.name
1 -0.7289964  0.2194702 -2.4674780         0.2194702               2
                     y
2  1.0889353  0.3167629 -0.9208548         0.3167629               2
                     y
3 -0.6374692 -1.7249049  0.6567313         0.6567313               3
                    z
4 -0.1348642  0.4507473 -1.7309010         0.4507473               2
                    y


Any suggestion will be greatly appreciated!

Thank you!

Gary

    [[alternative HTML version deleted]]

______________________________________________
R-help at r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.




More information about the R-help mailing list