添加两个不同大小和子集的数据框
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.grid
从 temp 的行和列名称创建行和列索引矩阵,然后 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
我有一堆看起来像这样的转换矩阵。
> 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.grid
从 temp 的行和列名称创建行和列索引矩阵,然后 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