Rank per row over multiple columns in R
?rank
and see how to handle ties.
x <- cbind(a=c(11,22,44),
b=c(21,12,22),
c=c(35,66,12))
> x
a b c
[1,] 11 21 35
[2,] 22 12 66
[3,] 44 22 12
EDITED 2018-10-22
Now, rank on
rows
t(apply(-x, 1, rank))
a b c
[1,] 3 2 1
[2,] 2 3 1
[3,] 1 2 3
or columns
apply(x, 2, rank)
a b c
[1,] 3 1 3
[2,] 2 2 1
[3,] 1 3 2
You're looking for rank. To get decreasing order, first negate the data.frame.
data.frame(d, t(apply(-d, 1, rank, ties.method='min')))
# V1 V2 V3 V1.1 V2.1 V3.1
# 1 11 21 35 3 2 1
# 2 22 12 66 2 3 1
# 3 44 22 12 1 2 3