根据列中的最大值对列进行排序 - R 数据帧排列

Order columns based on max value in columns - R dataframe arranging

我有以下数据框:

x <- data.frame("A" = c(NA, NA, 3:10, NA), "B" = c(NA,2:11), "C" = c(2:12))

如何根据每行中的最大值对 R 中的列重新排序。所以这里的列顺序应该是

C, B, A

因为最大值在 C 列,下一个最大值在 B 列,最后一个最大值在 A 列。

我有一个巨大的数据框,需要自动执行此操作。

谢谢

这行得通吗,使用 base R:

x[names(sort(sapply(x, max, na.rm = T), decreasing = T))]
    C  B  A
1   2 NA NA
2   3  2 NA
3   4  3  3
4   5  4  4
5   6  5  5
6   7  6  6
7   8  7  7
8   9  8  8
9  10  9  9
10 11 10 10
11 12 11 NA

我想这就是你想要的。

x <- data.frame("A" = c(NA, NA, 3:10, NA), "B" = c(NA,2:11), "C" = c(2:12))
maxx <- sapply(x, function(x) max(x,na.rm = TRUE))
result <- x[,order(-maxx)]
result
    C  B  A
1   2 NA NA
2   3  2 NA
3   4  3  3
4   5  4  4

这样的解决方案行得通吗?

x %>% dplyr::arrange(-C,-B,-A)

x %>% dplyr::arrange(desc(C,B,A))

另请参阅问题:[dplyr arrange() function sort by missing values] ()