如何透過行名稱按 R 中的矩陣列進行聚合?


為了按照行名稱來聚合矩陣列,我們可以把 colSums 與 sapply 結合起來,再對輸出進行轉置。例如,如果我們有一個叫做 M 的矩陣,那麼可以透過 t(sapply(by(M,rownames(M),colSums),identity)) 來按行名稱聚合矩陣列。

示例 1

考慮下述矩陣 −

動手實踐

> M1<-matrix(rpois(40,2),ncol=2)
> rownames(M1)<-sample(c("A","B","C","D"),20,replace=TRUE)
> M1

輸出

  [,1] [,2]
B    4    6
D    2    1
B    1    5
C    0    0
A    2    3
B    1    0
B    5    3
D    1    3
C    0    1
C    0    2
D    1    1
B    7    2
C    2    3
C    2    3
C    2    2
C    1    2
B    1    1
C    5    3
D    2    2
D    5    2

透過行名稱查詢 M1 的聚合 −

> t(sapply(by(M1,rownames(M1),colSums),identity))

輸出

  V1 V2
A  2  3
B 19 17
C 12 16
D 11  9

示例 2

動手實踐

> M2<-matrix(rpois(40,10),ncol=2)
> rownames(M2)<-sample(c("S1","S2","S3"),20,replace=TRUE)
> M2

輸出

   [,1] [,2]
S1    6   10
S3    7   11
S3   13    6
S1    9    9
S2   11    9
S3    6    8
S1    4    5
S3    8   12
S2   14    8
S3   11    7
S1   15   12
S3    8   13
S3    9   10
S1   10    8
S2   14   18
S1   13   10
S1   10    4
S3   12    7
S2    5    9
S3   13    8

透過行名稱查詢 M2 的聚合 −

> t(sapply(by(M2,rownames(M2),colSums),identity))

輸出

   V1 V2
S1 67 58
S2 44 44
S3 87 82

更新於: 06-Mar-2021

1K+ 瀏覽

開啟你的 職業生涯

完成課程並獲得認證

開始學習
廣告