从数据框中的多个列中选择最大值或相等值

时间:2013-05-13 18:00:04

标签: r

我正在尝试为data.frame中的每一行选择值最高的列。因此,例如,数据就这样设置。

> df <- data.frame(one = c(0:6), two = c(6:0))
> df
  one two 
1   0   6
2   1   5
3   2   4
4   3   3
5   4   2
6   5   1
7   6   0

然后我想基于这些行设置另一列。数据框看起来像这样。

> df
  one two rank 
1   0   6    2
2   1   5    2
3   2   4    2
4   3   3    3
5   4   2    1
6   5   1    1
7   6   0    1

我想我可以通过某种方式在这里使用plyr或sapply,但此刻它正在躲避我。

1 个答案:

答案 0 :(得分:6)

可能有更有效的解决方案,但

ranks <- apply(df, 1, which.max)
ranks[which(df[, 1] == df[, 2])] <- 3

编辑:间隔适当!