【问题标题】:R partial sum of rows/columns of a matrixR 矩阵的行/列的部分总和
【发布时间】:2016-09-06 01:38:50
【问题描述】:

有没有办法从一个KNxKN方阵中得到一个KNxN矩阵和一个NxKN?

K:数据中的行业数量。 N:数据中的国家数量。

每一行/列名编码 3 个代码国家名称,例如美国,分隔符 .c 和行业编号,例如美国.c1 .

我尝试使用 colSums 和 rowSums 但函数只返回一个数字而不是 N 个数字。

2 个行业和 2 个国家/地区矩阵的最小工作示例

           BEL.c30 BEL.c31 CAN.c25 CAN.c26
   BEL.c30   11844      14       1       0
   BEL.c31      85     227       0       0
   CAN.c25       0       0    1037       1
   CAN.c26       0       0      43    1113

第一个矩阵应该是这样的(两个国家的行总和):

               BEL     CAN
   BEL.c30    11858      1       
   BEL.c31      312     227              
   CAN.c25       0      1038  
   CAN.c26       0      1156

第二个矩阵应该是这样的(每个国家的列总和):

              BEL.c30 BEL.c31 CAN.c25 CAN.c26
      BEL    11929      241     1     0
      CAN       0         0     1080  1114

【问题讨论】:

    标签: r matrix


    【解决方案1】:

    这是一种选择:

    do.call(rbind, tapply(as.data.frame(m), sub("\\.c.*", "", colnames(m)), colSums))
    #    BEL.c30 BEL.c31 CAN.c25 CAN.c26
    #BEL   11929     241       1       0
    #CAN       0       0    1080    1114
    
    do.call(cbind, tapply(as.data.frame(t(m)), sub("\\.c.*", "", colnames(m)), colSums))
    #          BEL  CAN
    #BEL.c30 11858    1
    #BEL.c31   312    0
    #CAN.c25     0 1038
    #CAN.c26     0 1156
    

    【讨论】:

      猜你喜欢
      • 2020-11-23
      • 1970-01-01
      • 2015-07-05
      • 1970-01-01
      • 1970-01-01
      • 2019-08-12
      • 2017-06-01
      • 2019-03-21
      • 1970-01-01
      相关资源
      最近更新 更多