问题很简单。我开始使用dplyr,但无法提出如何对每行中的值进行排名的解决方案。最终目标是为每个值和每行分配一个等级。我尝试了以下无效的方法:
mat_agg %>% rowwise() %>% mutate_each(funs(rank))
一个例子是:
matrix(c(1,0,0.5,0.5, 0, 1),nrow=2)
期望的结果将是:
matrix(c(1,3,2,2, 3, 1),nrow=2)
我非常感谢任何帮助。谢谢!
答案 0 :(得分:4)
我们可以将apply()
与rank()
结合使用。我们否定m
以降序,并转换输出以获得所需的结构。
t(apply(-m,1,rank))
# [,1] [,2] [,3]
#[1,] 1 2 3
#[2,] 3 2 1
答案 1 :(得分:2)
如果我们使用dplyr
,请将matrix
转换为data.frame
,并将do
与rowwise
library(dplyr)
data.frame(m1) %>%
rowwise() %>%
do(data.frame(t(rank(-unlist(.)))))
# X1 X2 X3
# (dbl) (dbl) (dbl)
#1 1 2 3
#2 3 2 1