R中多个列上的每行排名
我用R来分析我的硕士论文。不幸的是,我遇到了这个问题: 我想计算一个新变量,它计算多个变量中每行一个变量的秩 例如:R中多个列上的每行排名,r,rank,R,Rank,我用R来分析我的硕士论文。不幸的是,我遇到了这个问题: 我想计算一个新变量,它计算多个变量中每行一个变量的秩 例如: 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
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
?排名
,查看如何处理领带
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
或列
apply(x, 2, rank)
a b c
[1,] 3 1 3
[2,] 2 2 1
[3,] 1 3 2
你在寻找排名。要获得降序,请首先对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
您想如何处理关系?我认为您需要对结果应用转置,以获得行上的排名。44、22、12没有被列为1、1、3。但它的转置是:`t(apply(-x,1,rank))`
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