2013-03-18 4 views
5

Ich habe zwei Datenframes. Die Zeilennamen in beiden sind Datumsangaben. Was ich tun möchte ist, ich möchte alle gemeinsamen Zeilen (mit gleichen Daten) in beiden Datenrahmen auswählen und einen neuen Datenrahmen mit nur diesen gemeinsamen Zeilen erstellen.Suche nach Überschneidungen von Dataframe-Rownames

Natürlich würden die einzelnen Spalten nebeneinander angehängt werden.

Kann mir bitte jemand helfen ??

+1

Einen neuen Benutzer downbooten und keine konstruktive Rückmeldung? * seufz * –

+0

@RicardoSaporta Einverstanden, Schande über sie. –

Antwort

5

Versuchen:

merge(df1, df2, by="row.names") 
?merge 

auch durch = 0 anstelle von 'row.names' verwenden können. Und BTW die rownames sind nicht R Date Klasse, aber sind Character bewertet. Ich denke, man könnte auch dies tun:

cbind(df1[ intersect(rownames(df1), rownames(df2)), ] , 
     df2[ intersect(rownames(df1), rownames(df2)), ]) 
+0

das alte +1 und lösche meine Hälfte typisierte Antwort. – mnel

+0

Ich brauchte Zeit, um zu überprüfen? Zusammenführen. Sollte dir Zeit gegeben haben, zu beenden. –

+1

Ich schrieb einen Abschnitt über die Terminologie der inneren und äußeren Verbindungen. – mnel

0

auf BondedDust der Antwort basiert, wenn Sie die erste Zeile der seinen Vorschlag verwenden, können Sie die Daten erhalten, wie Sie wollen, da Sie eine Kreuzung der Daten mit der Funktion definieren "intersect", filtere die Daten mit den Operatoren ('[' und ']') und binde die Daten nach Spalten mit der Funktion 'cbind'.

cbind(df1[ intersect(rownames(df1), rownames(df2)), ])