按组计算R中的行和列矩阵和

按组计算R中的行和列矩阵和,r,matrix,sum,rowsum,R,Matrix,Sum,Rowsum,我有一个矩阵矩阵,有两个级别分组,如行和列名所示 UKC1_SS1 UKC1_SS2 UKC2_SS1 UKC2_SS2 UKC1_SS1 1 2 3 4 UKC1_SS2 5 6 7 8 UKC2_SS1 9 10 11 12 UKC2_SS2 13

我有一个矩阵
矩阵
,有两个级别分组,如行和列名所示

           UKC1_SS1   UKC1_SS2   UKC2_SS1   UKC2_SS2
UKC1_SS1       1          2          3          4
UKC1_SS2       5          6          7          8
UKC2_SS1       9         10         11         12
UKC2_SS2      13         14         15         16
我想创建一个表,其中列和行的总和基于列和行名称的前四位数字:

      UKC1   UKC2   
UKC1    14     22  
UKC2    46     54  
我试着按顺序计算
rowsums
colSums

sum.matrix <- rowsum(matrix, substr(rownames(matrix), start = 1, stop = 4))
sum.matrix <- colSums(sum.matrix, substr(colnames(test), start = 1, stop = 4)

sum.matrix在使用前4个字符的
substr
更改
dimnames
后,我们可以使用
xtabs
执行
sum

dimnames(m1) <- lapply(dimnames(m1), substr, 1, 4)
xtabs(Freq~ Var1 + Var2, as.data.frame.table(m1))
#      Var2
#Var1   UKC1 UKC2
#  UKC1   14   22
#  UKC2   46   54

dimnames(m1)在使用前4个字符的
substr
更改
dimnames
后,我们可以使用
xtabs
进行
sum

dimnames(m1) <- lapply(dimnames(m1), substr, 1, 4)
xtabs(Freq~ Var1 + Var2, as.data.frame.table(m1))
#      Var2
#Var1   UKC1 UKC2
#  UKC1   14   22
#  UKC2   46   54

dimnames(m1)谢谢你,它很管用!只是想补充一点,我的问题中有一个拼写错误,现在已经更正了。第四列的列名应该是UKC2_SS2,而不是UKC2_SS1,因此无需将m1的最后一列命名为UKC2_SS1.1。谢谢,它可以工作!只是想补充一点,我的问题中有一个拼写错误,现在已经更正了。第4列的列名应为UKC2_SS2而不是UKC2_SS1,因此无需将m1的最后一列命名为UKC2_SS1.1。