Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is there something like a pmax index?

Tags:

dataframe

r

I have a data frame with the following data:

date=strptime(c(20110101,20110102,20110103,20110104,20110105,20110106),'%Y%m%d')
rate1=c(1,2,3,4,5,6)
rate2=c(2,1,3,6,8,4)
rate3=c(4,1,3,6,8,3)
rate4=c(7,8,9,2,1,8)
z=data.frame(date,rate1,rate2,rate3,rate4)
z$max=pmax(rate1,rate2,rate3,rate4)

The pmax function allows me to get the maximum value for that record, but I was wondering how I can get the index of the maximum value for that record.

Where z$max would equal 7,8,9,6,8,8, I would like to get 5,5,5,3,3,5

Is this possible? I know this seems like something simple but I cannot find the answer anywhere.

like image 321
thequerist Avatar asked Nov 22 '11 00:11

thequerist


1 Answers

You could use max.col:

> z$max = max.col(z[2:5])+1
> z
        date rate1 rate2 rate3 rate4 max
1 2011-01-01     1     2     4     7   5
2 2011-01-02     2     1     1     8   5
3 2011-01-03     3     3     3     9   5
4 2011-01-04     4     6     6     2   3
5 2011-01-05     5     8     8     1   3
6 2011-01-06     6     4     3     8   5

I think you mean you wanted the index but you only use 4 vectors there, so to find what you want, you would have to find the index and then add 1.

like image 182
Galled Avatar answered Sep 20 '22 11:09

Galled