根据列中的最大值对列进行排序 - 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] ()
我有以下数据框:
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] (