我有两个看起来像这样的数据框:
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
答案 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