在R中同时合并两个id的表

时间:2017-12-10 12:34:18

标签: r join merge

我有3个数据集

df1 has two column with id
df2 has one column with id
df3 has one column with id


df1=structure(list(id1.df1 = c(1L, 3L, 5L), id2.df1 = 4:6, ids = c(0.7, 
0.8, 0.9)), .Names = c("id1.df1", "id2.df1", "ids"), class = "data.frame", row.names = c(NA, 
-3L))

df2=structure(list(id1.df2 = c(1L, 3L, 5L), x3 = c(46L, 6546L, 65L
)), .Names = c("id1.df2", "x3"), class = "data.frame", row.names = c(NA, 
-3L))

df3=structure(list(id2.df3 = c(2L, 4L, 5L), x4 = c(5467L, 78L, 654L
)), .Names = c("id2.df3", "x4"), class = "data.frame", row.names = c(NA, 
-3L))

我需要合并这3个数据集,以便查询返回 与第一个数据集中的id1和id2匹配的字符串,第二个数据集为id1,第三个数据集为id2。

输出我希望

id1-df1 id1-df2 ids id2-df1 x3  id2-df3 x4
    1   4        0,7    1   46     4    78
    3   5        0,8    3   6546   5    654
    5   6        0,9    5   65     6    5467

第一个数据集的I.E,1和4 id分别合并到第二个数据集的1个id和第三个数据集的4个id。

你能帮帮我吗?

1 个答案:

答案 0 :(得分:1)

首先,我认为你的陈述中有一个错误,给出了df3的数据。我想你想要id2.df3 = c(6L, 4L, 5L)。使用该数据,您可以使用merge两次执行此操作。

merge(merge(df1, df2, by.x = 'id1.df1', by.y = 'id1.df2'),
  df3, by.x = 'id2.df1', by.y = 'id2.df3')
  id2.df1 id1.df1 ids   x3   x4
1       4       1 0.7   46   78
2       5       3 0.8 6546  654
3       6       5 0.9   65 5467

这只包含一次id1和id2列,而不是你建议的答案的两倍,但这些列完全是多余的。如果需要,您可以添加额外的副本。