Rank per row over multiple columns in R
我正在使用 R 来分析我的硕士论文。不幸的是,我遇到了这个问题:
我想计算一个新变量,它计算许多变量中每行一个变量的排名。
示例:
|
1
2 3 4 |
V1 V2 V3 NewVariable_V1 NewVariable_V2 NewVariable_V3
11 21 35 3 2 1 22 12 66 2 3 1 44 22 12 1 2 3 |
- 你想如何处理关系?
您正在寻找排名。要获得降序,首先否定 data.frame.
|
1
2 3 4 5 |
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 |
?rank 看看如何处理平局。
|
1
2 3 4 5 6 7 8 |
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 |
2018-10-22 编辑
现在,排名
行
|
1
2 3 4 5 |
t(apply(-x, 1, rank))
a b c [1,] 3 2 1 [2,] 2 3 1 [3,] 1 2 3 |
或列
|
1
2 3 4 5 |
apply(x, 2, rank)
a b c [1,] 3 1 3 [2,] 2 2 1 [3,] 1 3 2 |
- 我认为您需要将转置应用到您的结果中以对行进行排名。 44, 22, 12 没有排序为 1, 1, 3。但是它的转置是:`t(apply(-x, 1, rank))`
来源:https://www.codenong.com/22227828/
