[英]Sort matrix column in R
我有一個矩陣 (x),其中包含以下形式的幾列和幾行:
2 5 3 6 4
3 6 4 2 5
4 2 5 3 6
我希望對列進行升序排序apply(x,2,sort)
和稍后對列中的平均值進行升序排序。
輸出將如下所示:
2 2 3 2 3
3 3 4 5 5
4 6 5 6 6
數據
x <- structure(c(2, 3, 4, 5, 6, 2, 3, 4, 5, 6, 2, 3, 4, 6, 6), .Dim = c(3L, 5L))
您可以執行以下操作:
A <- matrix(c(2, 3, 4, 5, 6, 2, 3, 4, 5, 6, 2, 3, 4, 6, 6), ncol=5)
B <- apply(A, 2, sort)
C <- B[, order(apply(B, 2, sum), decreasing = FALSE)]
> C
[,1] [,2] [,3] [,4] [,5]
[1,] 2 2 3 2 4
[2,] 3 3 4 5 6
[3,] 4 6 5 6 6
這是你的矩陣
mat <- matrix(c(2,5, 3, 6, 4,3 ,6 ,4 ,2 ,6, 4 ,2 ,5, 3, 6), byrow=T, nrow=3, ncol = 5)
mat
[,1] [,2] [,3] [,4] [,5]
[1,] 2 5 3 6 4
[2,] 3 6 4 2 6
[3,] 4 2 5 3 6
以升序方式對列進行排序
mat_colsort <- apply(mat,2,sort)
mat_colsort
[,1] [,2] [,3] [,4] [,5]
[1,] 2 2 3 2 4
[2,] 3 5 4 3 6
[3,] 4 6 5 6 6
獲取列均值
avgs <- colMeans(mat_colsort)
求列均值的遞增順序
neworder <- order(avgs)
適當地重新排列你的矩陣
sorted_matrix <- mat_colsort[,neworder]
sorted_matrix
[,1] [,2] [,3] [,4] [,5]
[1,] 2 2 3 2 4
[2,] 3 3 4 5 6
[3,] 4 6 5 6 6
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.