2017-08-29 14 views
3

私はこれらのような遷移マトリックスを持っています。異なるサイズとサブセットの2つのデータフレームを追加する

> 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 

は簡単に第二に第1行​​列を追加する方法はあります。したがって、たとえば283という数字は自動的に(2,3)になります。私はいつも反復し、行と列の名前が一致するかどうかを確認する長いと面倒なforループを避けることを望んでいます。

ありがとうございました!

答えて

3

あなたはexpand.gridを用いTEMPの行と列の名前の行と列インデックスのマトリックスを作成し、blankMatrix[matrix index]でき、マトリックスインデックス内のインデックス対から値を選択します。対応するインデックスの値を変更するには、値を割り当てます。

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 
+0

@Psidorn:私は 'blankMatrixは[matIndex] <取得しています - data.frame'(' * TMP * '、matIndex、値=リスト(' 31〜60 - [< 'で一時 エラー。 '= c(283L、: サポートされていないマトリックスインデックスの置換 ' – user1357015

+0

' blankMatrix'はデータフレームのようですが、これを動作させるには行列に変換する必要があります。 – Psidom

+0

データフレームでこれを行う方法はありますか? tempStreamは "as.data.frame.matrix"を使って作成されます – user1357015

関連する問題