R中 Dataframe 的行的秩排序

vbkedwbf  于 2023-01-18  发布在  其他
关注(0)|答案(2)|浏览(146)

我是说,如果有一种方法可以将我的Data的行排列在下面,使同时risk1risk2risk3中具有最大值的行(* 不是三个的总和 *)位于顶部?
例如,在我的Desired_output中,您可以看到id == 4同时risk1risk2risk34,3,2)上具有最大值。
对于所有其他idrisk1risk2risk3中至少有一个上存在10
注:领带也可以。4,3,2 == 2,3,4 == 3,2,4

Data = data.frame(id=1:4,risk1 = c(1,3,5,4), risk2 = c(8,2,1,3), risk3 = c(0,1,4,2))

Desired_output = read.table(h=T,text="
id  risk1 risk2 risk3
4     4     3     2
3     5     1     4
2     3     2     1
1     1     8     0
")
bfnvny8b

bfnvny8b1#

也许这会有帮助--遍历行,sort元素,paste,转换为数值,使用它来order

Data[order(-apply(Data[-1], 1, \(x) 
     as.numeric(paste(sort(x), collapse = "")))),]
  • 输出
id risk1 risk2 risk3
4  4     4     3     2
3  3     5     1     4
2  2     3     2     1
1  1     1     8     0
aamkag61

aamkag612#

这就是诀窍:

library(dplyr)

Data %>% 
  arrange(-row_number())
id risk1 risk2 risk3
1  4     4     3     2
2  3     5     1     4
3  2     3     2     1
4  1     1     8     0

相关问题