相交数据帧

相交数据帧

问题描述:

我有两个数据帧具有相同的列数但不同的行数。相交数据帧

例如

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

您可以比较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