添加两个不同大小和子集的数据框

Adding two data frames of different sizes and subsets

我有一堆看起来像这样的转换矩阵。

> temp
        31-60 5-30 61-90 Current PaidOff
5-30      283  317     9     500       9
Current     0 2935     0  179989    1689
PaidOff     0    0     0       0       0

我想标准化大小,所以我制作了一个具有正确行名和列名的 0 矩阵:

> blankMatrix
                  Current 5-30 31-60 61-90 91-120 ChargeOff_Default PaidOff
Current                 0    0     0     0      0                 0       0
5-30                    0    0     0     0      0                 0       0
31-60                   0    0     0     0      0                 0       0
61-90                   0    0     0     0      0                 0       0
91-120                  0    0     0     0      0                 0       0
ChargeOff_Default       0    0     0     0      0                 0       0
PaidOff                 0    0     0     0      0                 0       0

有没有办法轻松地将第一个矩阵添加到第二个矩阵。因此,例如数字 283 将自动进入位置 (2,3)。我希望避免冗长而混乱的 for 循环,我不断迭代并检查行名和列名是否匹配。

谢谢!

您可以使用 expand.gridtemp 的行和列名称创建行和列索引矩阵,然后 blankMatrix[matrix index] 将 select 矩阵索引中索引对的值;要更改相应索引处的值,只需为其分配值即可;

temp <- as.matrix(temp)
blankMatrix <- as.matrix(blankMatrix)

matIndex <- as.matrix(expand.grid(rownames(temp), colnames(temp)))
blankMatrix[matIndex] <- temp
blankMatrix
#                  Current X5.30 X31.60 X61.90 X91.120 ChargeOff_Default PaidOff
#Current            179989  2935      0      0       0                 0    1689
#5-30                  500   317    283      9       0                 0       9
#31-60                   0     0      0      0       0                 0       0
#61-90                   0     0      0      0       0                 0       0
#91-120                  0     0      0      0       0                 0       0
#ChargeOff_Default       0     0      0      0       0                 0       0
#PaidOff                 0     0      0      0       0                 0       0