2013-03-18 11 views
5

Mam dwie ramki danych. Nazwy wierszy w obu są datami. Chcę tylko wybrać wszystkie wspólne wiersze (mające te same daty) w obu ramkach danych i utworzyć nową ramkę danych zawierającą tylko te wspólne wiersze.Znaleźć skrzyżowanie rownamesów danych

Oczywiście poszczególne kolumny zostaną dołączone obok siebie.

Czy ktoś może pomóc?

+1

Zignorowanie nowego użytkownika i brak konstruktywnej opinii? * westchnienie * –

+0

@RicardoSaporta Uzgodnione, wstyd na nich. –

Odpowiedz

5

Spróbuj:

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

można również użyć znaku = 0 zamiast "row.names. I BTW rownames nie są R Data klasy, ale są cenione. Przypuszczam, że można też to zrobić:

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

to stary +1 i usuń moją połowę wpisanej odpowiedzi. – mnel

+0

Zrobiłem trochę czasu, aby sprawdzić? Scalić. Powinien dać ci czasu na dokończenie. –

+1

Pisałem akapit o terminologii połączeń wewnętrznych i zewnętrznych. – mnel

0

podstawie BondedDust za odpowiedź brzmi, jeśli używasz pierwszą linię jego sugestią można uzyskać dane jak chcesz, ponieważ będzie można zdefiniować przecięcie danych z funkcją "przecinają się", filtruj dane za pomocą operatorów ("[" i "]") i wiążą dane według kolumn funkcją "cbind".

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