匹配R

时间:2018-08-11 20:07:26

标签: r

我有两个这种形式的数据框

 df1<-data.frame(A=c(1,2,3))

 df1: 

 A   
 1    
 2    
 3  

 df2<-data.frame(A=c(1,2,3,1,2,4,5,7),B=c(cat,dog,cat,dog,cat,cat,dog,dog))

 df2:   
 A  B  
 1 cat  
 2 dog  
 3 cat   
 1 dog   
 2 cat  
 4 cat   
 5 dog  
 7 dog  

我想创建这种形式的第三个数据框

  dataframe3   
  A B    
  1 cat  
  2 dog  
  3 cat  
  1 dog  
  2 cat

换句话说,我想将所有与数据帧1中的观测值匹配的观测值保留在第二个数据帧中。但是,如果使用match函数,它将仅返回两个数据帧之间的第一个“公共”条目,而我希望两者之间的所有条目都相同。

请问有人可以帮我吗?

1 个答案:

答案 0 :(得分:1)

Base R解决方案

df1 = read.table(text = "
A
1
2
3
", header=T)

df2 = read.table(text = "
A B
1 cat
2 dog
3 cat
1 dog
2 cat
4 cat
5 dog
7 dog
", header=T)

df2[df2$A %in% df1$A,]

#   A   B
# 1 1 cat
# 2 2 dog
# 3 3 cat
# 4 1 dog
# 5 2 cat