Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在R中同时使用两个id合并表_R_Join_Merge - Fatal编程技术网

在R中同时使用两个id合并表

在R中同时使用两个id合并表,r,join,merge,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 =

我有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
即,第一个数据集的1和4 id分别合并到第二个数据集的1 id和第三个数据集的4 id


你能帮我吗?

首先,我认为你提供df3数据的声明有错误。我想你想要的是
id2.df3=c(6L,4L,5L)
。使用该数据,您可以使用“合并”两次来执行此操作

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列,不像您建议的答案那样包含两次,但它们是完全冗余的。如果需要,您可以添加额外的副本