Данные объединяются с data.table для повторения уникальных значений - PullRequest
0 голосов
/ 31 января 2019

Я пытаюсь выполнить два слияния двух столбцов в таблице данных «A» с другим столбцом в другой таблице данных «B», которая является уникальным значением столбца.Я хочу объединить таким образом, чтобы для каждой уникальной комбинации двух переменных в таблице данных «A» мы получали все уникальные значения столбца в таблице данных «B».

Я пытался объединить, но это нене дают мне все значения. Я также попробовал функцию автоматической переработки в data.table, но это также не дает мне результат.

Ввод: data.table A

XY

1 1

1 2

1 3

2 1

3 1

4 4

4 5

5 6

data.table B

Z

1

2

Ожидаемый результат

XYZ

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 голосов
/ 31 января 2019

Мы можем использовать 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))]
...