基于muilt标识符的两个数据帧的Extrct comm行使用R.

时间:2016-06-08 16:30:33

标签: r dataframe

我有两个看起来像这样的数据框:

df1 <- data.frame(id = 1:5, loc = 100:104, ft = 2:6)
df2 <- data.frame(id = 2:6, loc = c(101:104,105), ft = 7:11)

我希望得到两个基于comm&#34; id&#34;的数据帧。和&#34; loc&#34;对于df1和df2,分别。看起来像:

df1.1
  id loc ft
2  2 101  3
3  3 102  4
4  4 103  5
5  5 104  6
df2.1
  id loc ft
1  2 101  7
2  3 102  8
3  4 103  9
4  5 104 10

2 个答案:

答案 0 :(得分:1)

或没有merge()

df1[df1$id %in% df2$id & df1$loc %in% df2$loc,]
#   id loc ft
#1:  2 101  3
#2:  3 102  4
#3:  4 103  5
#4:  5 104  6

df2[df2$id %in% df1$id & df2$loc %in% df1$loc,]
#   id loc ft
#1:  2 101  7
#2:  3 102  8
#3:  4 103  9
#4:  5 104 10

答案 1 :(得分:0)

您可以尝试从其他数据框中删除ft列的内部联接。

df1.1 <- merge(df1, df2[-3], by = c("id", "loc"))
df1.1
  id loc ft
1  2 101  3
2  3 102  4
3  4 103  5
4  5 104  6

df2.1 <- merge(df2, df1[-3], by = c("id", "loc"))
df2.1
  id loc ft
1  2 101  7
2  3 102  8
3  4 103  9
4  5 104 10