gpt4 book ai didi

R:根据排名重新排列数据框的列

转载 作者:行者123 更新时间:2023-12-01 17:28:11 25 4
gpt4 key购买 nike

我有以下数据框(df1)

Type     CA     AR       OR
alpha 2 3 5
beta 1 5 6
gamma 6 2 8
delta 8 1 9
Total 17 11 28

我想重新排序此数据框,使其基于“总计”行按降序排列。

生成的数据框应如下所示 (df2)

    Type     OR    CA     AR       
alpha 5 2 3
beta 6 1 5
gamma 8 6 2
delta 9 8 1
Total 28 17 11

请注意,之前按“CA、AR、OR”排序的列现在已根据总行数变为“OR、CA、AR”(按降序排序。)

为了做到这一点,我尝试使用排名函数,如下所示:

rank_total <- rank(-df1)

这给了我排名:

 [1] 2 1 3

但是,我现在不知道如何根据这些排名重新排序。

有人知道如何从这里继续吗?或者如果有另一种方法可以完全做到这一点,那就太好了!

提前非常感谢!

最佳答案

尝试

 df2 <- df1[,c(1, order(-unlist(df1[df1$Type=='Total',-1]))+1)]
df2
# Type OR CA AR
#1 alpha 5 2 3
#2 beta 6 1 5
#3 gamma 8 6 2
#4 delta 9 8 1
#5 Total 28 17 11

或者使用排名

 df1[,c(1, match(1:3, rank(-unlist(df1[nrow(df1),-1])))+1)]

数据

 df1 <- structure(list(Type = c("alpha", "beta", "gamma", "delta", "Total"
), CA = c(2L, 1L, 6L, 8L, 17L), AR = c(3L, 5L, 2L, 1L, 11L),
OR = c(5L, 6L, 8L, 9L, 28L)), .Names = c("Type", "CA", "AR",
"OR"), class = "data.frame", row.names = c(NA, -5L))

关于R:根据排名重新排列数据框的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30534347/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com