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.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With