我有两个这种形式的数据框
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函数,它将仅返回两个数据帧之间的第一个“公共”条目,而我希望两者之间的所有条目都相同。
请问有人可以帮我吗?
答案 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