我有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。
你能帮帮我吗?
答案 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列,而不是你建议的答案的两倍,但这些列完全是多余的。如果需要,您可以添加额外的副本。