簡體   English   中英

R中的排序矩陣列

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM