2017-06-13 31 views
1

我有兩個數據幀具有相同的列數但不同的行數。相交數據幀

例如

df1 

    name1 name2 name3 
a  A  B  G 
b  D  A  R 
c  F  T  Q 
d  Y  W  A 
e  G  Y  D 


df2 

    name1 name2 name3 
a  A  B  C 
b  D  A  I 
c  A  T  G 
e  G  Y  D 
f  E  T  G 
g  A  C  T 

我dataframes比這個例子更大。有沒有簡單的方法從第一個數據框中刪除第二個數據框中不存在的行?我有rownames刪除行,所以輸出應該是:

DF1

name1 name2 name3 
a  A  B  G 
b  D  A  R 
c  F  T  Q 
e  G  Y  D 

d輾轉行,因爲它不是在第二個數據幀。

+2

使用set函數'intersect',你可以做'df1 [intersect(rownames(df1),rownames(df2)),]'。 – lmo

+0

[如何加入(合併)數據幀(內部,外部,左側,右側)?](https://stackoverflow.com/questions/1299871/how-to-join-merge-data-frames-inner -outer-left-right) – polka

回答

0

您可以比較rownames並選擇這些行。

df1[which(rownames(df1) %in% rownames(df2)),] 
    name1 name2 name3 
a  A  B  G 
b  D  A  R 
c  F  T  Q 
e  G  Y  D 
+0

是的,這只是計算想要的東西。如果你想改變數據幀,使用'df1 = df1 [which(rownames(df1)%in%rownames(df2)),] ' – G5W

相關問題