数据与data.table合并以重复唯一值

时间:2019-01-31 11:31:08

标签: r merge data.table

我正在尝试将数据表“ A”中的两个列与另一个数据表“ B”中的另一列进行两个合并,这是列的唯一值。我想以这样的方式进行合并:对于数据表“ A”中两个变量的每个唯一组合,我们将重复获取数据表“ B”中列的所有唯一值。

我尝试了合并,但是并没有给我所有的值。我还尝试了data.table中的自动回收功能,但这也没有给我结果。

输入: data.table A

X Y

1 1

1 2

1 3

2 1

3 1

4 4

4 5

5 6

data.table B

Z

1

2

预期产量

X Y Z

1 1 1

1 1 2

1 2 1

1 2 2

1 3 1

1 3 2

2 1 1

2 1 2

3 1 1

3 1 2

4 4 1

4 4 2

4 5 1

4 5 2

5 6 1

5 6 2

1 个答案:

答案 0 :(得分:2)

我们可以利用crossing中的tidyr

library(tidyr)
crossing(A, B)
#   X Y Z
#1  1 1 1
#2  1 1 2
#3  1 2 1
#4  1 2 2
#5  1 3 1
#6  1 3 2
#7  2 1 1
#8  2 1 2
#9  3 1 1
#10 3 1 2
#11 4 4 1
#12 4 4 2
#13 4 5 1
#14 4 5 2
#15 5 6 1
#16 5 6 2

或者与merge中的base R一起使用,但是顺序会稍有不同

merge(A, B)

要获得正确的顺序,请反向替换参数,然后对列进行排序

merge(B, A)[c(names(A), names(B))]