2015-08-03 85 views
0

我在R中有两个df(df1和df2),每个都有一个标题为Person的列。我真正的DF:■要长得多,但exampel这样的:在两个数据框中找到相同的元素

DF1:

Person     
P1 
P2 
P5 
P8 
P11 

DF2:

Person 
P1 
P5 
P7 
P8 
P12 

我知道要创建一个新的DF只属于元素两个数据帧都是相同的,所以在这个例子中它将是:

newdf:

Person 
P1 
P5 
P8 

我认为这应该是一个突击队,但我无法找到一个。

+0

你试过'相交(df1 $ Person,df2 $ Person)'? –

回答

1

你可以试试 -

new_df <- as.data.frame(intersect(df1$Person, df2$Person)) 
+0

如果我有3个df,我必须先交叉df1和df2,然后dfnew和df3吗? Couse相交(df1,df2,df3)dosent work ... – PrincessJellyfish

+0

是的,我认为是。这是唯一的出路。 –

+0

你可以使用'dplyr'中的'intersect',它取得一个data.frame。对于多个数据集,“减少(相交,列表(df1,df2,df3))'但确保列是相同的类。 – akrun

0

另一种选择是从dplyr

library(dplyr) 
inner_join(df1, df2) 
# Person 
#1  P1 
#2  P5 
#3  P8 

如果有多个数据集inner_join即> 2,一种选择是join_allplyr将数据集在list

df3 <- data.frame(Person=c("P1", "P5")) 
library(plyr) 
join_all(list(df1, df2, df3), by='Person', type='inner') 
# Person 
#1  P1 
#2  P5 

您可以根据需要更改type参数。

相关问题