2017-08-29 1 views
3

Ich habe eine Reihe von Übergangsmatrizen, die wie diese aussehen.Hinzufügen von zwei Datenrahmen unterschiedlicher Größe und Untergruppen

> 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 

Ich mag die Größe standardisieren, damit ich eine 0-Matrix mit den richtigen Zeilen- und Spaltennamen gemacht habe:

> 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 

Gibt es eine Möglichkeit leicht die erste Matrix in den zweiten hinzuzufügen. So würde zum Beispiel die Nummer 283 automatisch in Position (2,3) gehen. Ich hoffe, eine lange und chaotische for-Schleife zu vermeiden, wo ich ständig iteriere und überprüfe, ob die Zeilen- und Spaltennamen übereinstimmen.

Vielen Dank!

Antwort

3

Sie können eine Matrix aus Zeilen- und Spaltenindex aus den Zeilen- und Spaltennamen Temp erstellenexpand.grid und anschließend blankMatrix[matrix index] wählen Werte aus dem Indexpaar in der Matrix Index; Um die Werte am entsprechenden Index zu ändern, ordnen Sie ihm einfach die Werte zu;

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. Ich erhalte 'blankMatrix [matIndex] <- Temp Fehler in' [<- data.frame' ('* tmp *', matIndex, Wert = Liste ('31-60 '= c (283L,: nicht unterstützter Matrixindex als Ersatz) – user1357015

+0

Es scheint, als wäre die' blankMatrix' ein Datenrahmen, Sie müssen ihn in eine Matrix umwandeln, damit dies funktioniert. – Psidom

+0

Jeder Weg, dies mit Datenrahmen zu tun? temp matrix wird mit "as.data.frame.matrix" erstellt – user1357015

Verwandte Themen