У меня есть две таблицы данных x и y, как показано ниже:
x
Sample code code_conn pool_content
Sample1 A1 X1 ASD
Sample1 A1 X3 POS
Sample1 B1 Y1 QAW
Sample1 B1 Y2 QWP
Sample1 B1 Y3 SDE
Sample1 B1 Y4 LKS
Sample1 C1 Z2 JMP
Sample1 C1 Z3 MSK
Sample2 A1 X1 ASD
Sample2 A1 X2 POS
Sample2 B1 Y1 QAW
Sample2 B1 Y2 QWP
Sample2 B1 Y3 LKS
Sample2 B1 Y4 ASE
Sample2 B1 Y5 ASM
Sample2 C1 Z1 MSK
Sample2 D1 P1 EAX
Sample2 D1 P2 EBX
Sample2 D1 P3 ECX
Sample2 D1 P4 EDX
Sample2 D1 P5 MOV
Sample2 D1 P6 ALL
y
code code_conn
A1 X1
A1 X2
A1 X3
B1 Y1
B1 Y2
B1 Y3
B1 Y4
B1 Y5
C1 Z1
C1 Z2
C1 Z3
C1 Z4
D1 P1
D1 P2
D1 P3
D1 P4
D1 P5
D1 P6
Я хочу, чтобы вывод был следующим:
Sample code code_conn pool_content
Sample1 A1 X1 ASD
Sample1 A1 X2 …
Sample1 A1 X3 POS
Sample1 B1 Y1 QAW
Sample1 B1 Y2 QWP
Sample1 B1 Y3 SDE
Sample1 B1 Y4 LKS
Sample1 B1 Y5 …
Sample1 C1 Z2 JMP
Sample1 C1 Z3 MSK
Sample1 C1 Z1 …
Sample1 C1 Z4 …
Sample2 A1 X1 ASD
Sample2 A1 X2 POS
Sample2 A1 X3 …
Sample2 B1 Y1 QAW
Sample2 B1 Y2 QWP
Sample2 B1 Y3 LKS
Sample2 B1 Y4 ASE
Sample2 B1 Y5 ASM
Sample2 C1 Z1 MSK
Sample2 C1 Z2 …
Sample2 C1 Z3 …
Sample2 C1 Z4 …
Sample2 D1 P1 EAX
Sample2 D1 P2 EBX
Sample2 D1 P3 ECX
Sample2 D1 P4 EDX
Sample2 D1 P5 MOV
Sample2 D1 P6 ALL
Итак, что я в основном хочу, для каждого уникального образца в x, для каждой группы кода я хочу, чтобы все отсутствующие code_conn из таблицы y в таблице x и их pool_content были установлены в "...". Есть ли эффективная память и быстрый способ сделать это. Код и code_conn могут быть любой строкой (особенно последовательной комбинацией букв и цифр). Я приложил код для генерации данных ниже. Большое спасибо.
x <- data.table("Sample" = c(rep("Sample1", 8), rep("Sample2", 14)),
"code" = c("A1", "A1", "B1", "B1", "B1", "B1", "C1", "C1", "A1", "A1", rep("B1", 5), "C1", "C1", rep("D1", 5)),
"code_conn" = c("X1","X3","Y1","Y2","Y3","Y4","Z2","Z3","X1","X2","Y1","Y2","Y3","Y4","Y5","Z1","P1","P2","P3","P4","P5","P6"),
"pool_content" = c("ASD","POS","QAW","QWP","SDE","LKS","JMP","MSK","ASD","POS","QAW","QWP","LKS","ASE","ASM","MSK","EAX","EBX","ECX","EDX","MOV","ALL"))
y <- data.table("code" = c(rep("A1", 3), rep("B1", 5), rep("C1", 4), rep("D1", 6)),
"code_conn" = c("X1","X2","X3","Y1","Y2","Y3","Y4","Y5","Z1","Z2","Z3","Z4","P1","P2","P3","P4","P5","P6"))