有没有像pmax索引的东西?
我有以下数据的数据帧:有没有像pmax索引的东西?
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)
的PMAX功能可以让我获得该记录的最大值,但我不知道我怎样才能得到最大价值的指数为该记录。
其中Z $最大将等于7,8,9,6,8,8
,我想获得5,5,5,3,3,5
这可能吗?我知道这看起来很简单,但我无法在任何地方找到答案。
在基础R很简单:
z$wmax <- apply(z[, -c(1,6)],1, which.max)
其实,让你比你问什么,因为我排除的第一列1较少,但可以很容易地通过添加一个补救。
z$max_col_n <- apply(z[, -c(1,6)],1, which.max) +1
你可以使用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
我想你的意思是你想要的索引,但你只使用4个向量在那里,所以找到你想要的东西,你就必须找到索引和然后添加1.
谢谢,非常简单。 – thequerist
不要忘记阅读文档,因为该函数有一个参数'ties.method = c(“random”,“first”,“last”)',默认情况下使用'random'方法。 – Galled
是的,我看到了,但谢谢你指出。 – thequerist
谢谢,也适用于which.min将证明有用! – thequerist