Re: [R] data manipulation

From: Gavin Simpson <gavin.simpson_at_ucl.ac.uk>
Date: Fri, 29 Feb 2008 15:41:35 +0000

On Fri, 2008-02-29 at 15:01 +0000, Luis Ridao Cruz wrote:
> R-help,
>
> I have a data frame in which I compute maximum by rows
> and I wish to find out the column name at which this maximun occurs.
>
> Does anyone know how to do it?
>
> Thanks in advance

Do you mean compute the maximum value in a row and return which column this maximum occurred in? If so this is one way:

> dat <- data.frame(matrix(rnorm(100), ncol = 5))
> names(dat) <- paste("Var", 1:5, sep = "")
> head(dat)

        Var1 Var2 Var3 Var4 Var5

1  0.1510373 -0.64807707 -1.01413243 -0.7456820  0.1048061
2 -2.6693159 -0.23994702  0.37635088  0.4827074 -0.4895318
3 -1.1881114  0.02976593 -2.30550629  0.8875579 -1.4371890
4 -0.2446966 -0.52986123  0.98211952  1.8524755  1.2228393
5  1.7373406 -0.94157744  2.07561600  0.9042968  0.1344427
6 -0.8973550 -1.48810446 -0.06583172  1.2900323  1.6134146

> apply(dat, 1, function(x) names(dat)[which.max(x)])
 [1] "Var1" "Var4" "Var4" "Var4" "Var3" "Var5" "Var1" "Var2" "Var5" "Var1" [11] "Var2" "Var5" "Var1" "Var4" "Var1" "Var2" "Var1" "Var3" "Var4" "Var1"

Is that what you wanted?

if you want the column number, not the name, then replace the last line with:

> apply(dat, 1, which.max)

 [1] 1 4 4 4 3 5 1 2 5 1 2 5 1 4 1 2 1 3 4 1

To combine these into a named vector:

> row.max <- apply(dat, 1, max)
> names(row.max) <- apply(dat, 1, function(x) names(dat)[which.max(x)])
> row.max

      Var1 Var4 Var4 Var4 Var3 Var5 Var1  0.1510373 0.4827074 0.8875579 1.8524755 2.0756160 1.6134146 1.0785170

      Var2 Var5 Var1 Var2 Var5 Var1 Var4 -0.1014373 1.7488679 0.2963419 0.3852797 1.0020775 0.8578898 0.8784652

      Var1 Var2 Var1 Var3 Var4 Var1  0.5820790 2.0972333 1.2857461 0.7394983 0.4183199 0.9016516

HTH G

-- 
%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%
 Dr. Gavin Simpson             [t] +44 (0)20 7679 0522
 ECRC, UCL Geography,          [f] +44 (0)20 7679 0565
 Pearson Building,             [e] gavin.simpsonATNOSPAMucl.ac.uk
 Gower Street, London          [w] http://www.ucl.ac.uk/~ucfagls/
 UK. WC1E 6BT.                 [w] http://www.freshwaters.org.uk
%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%

______________________________________________
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.
Received on Fri 29 Feb 2008 - 15:44:23 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Fri 29 Feb 2008 - 16:30:17 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.

list of date sections of archive