R加入大数据table与Vector并重复X次

R join large data table with Vector and repeat X times

我是 R 的新手,正在努力应对挑战...

我在 R 中有两个数据 tables,我想将它们连接在一起,但也多次重复其中一个 tables (table 2)。 tables 的格式如下。

Table 1 (7500+ rows by 665 Columns each row is unique)
num_Hrs  Column A   Column B .... Column XZ
3128_1     0           1              0
3128_2     1           0              1
3128_3     1           0              1

Table 2 (each row is unique)
ColumnData
12345
12346
12347
12348 

我如何加入两个 table 并重复从 table 2 到 table 1 中的每一行的 25 行,这样我最终得到 7500 * 25 行追加列数据?我不想触及 Table 中的任何行 1 只添加 1 个新列,并重复 Table 中的值 2(重复行)。

TableMain
num_Hrs  Column A   Column B .... Column XZ ColumnData
3128_1     0           1              0         12345
3128_1     0           1              0         12346
3128_1     0           1              0         12347 
3128_2     1           1              0         12345
3128_2     1           1              0         12346
3128_2     1           1              0         12347 

然后我需要获取结果 TableMain 并在我有 table 3 的地方添加一个新列,该列具有与 num_Hrs in table 1 匹配的值,并且table 中的列数据 2.

Table 3
num_hrs   ColumnData
3128_1     1234
3128_1     1235
3128_2     1234 

如果这两个值与 TableMain 中的值匹配,则将 1 放入名为 "Found"

的新列中
num_Hrs  Column A   Column B .... Column XZ ColumnData Found
3128_1     0           1              0         12345   1
3128_1     0           1              0         12346   0
3128_1     0           1              0         12347   1
3128_2     1           1              0         12345   0
3128_2     1           1              0         12346   0
3128_2     1           1              0         12347   1

library(data.table)
dt1 = data.table(a = 1:4, b = 4:1)
#   a b
#1: 1 4
#2: 2 3
#3: 3 2
#4: 4 1

dt2 = data.table(c = letters[1:4])
#   c
#1: a
#2: b
#3: c
#4: d

dt2[, dt1[], by = c]
#    c a b
# 1: a 1 4
# 2: a 2 3
# 3: a 3 2
# 4: a 4 1
# 5: b 1 4
# 6: b 2 3
# 7: b 3 2
# 8: b 4 1
# 9: c 1 4
#10: c 2 3
#11: c 3 2
#12: c 4 1
#13: d 1 4
#14: d 2 3
#15: d 3 2
#16: d 4 1

dt3 = data.table(a = c(2, 4, 4), c = c('c', 'a', 'd'))
#   a c
#1: 2 c
#2: 4 a
#3: 4 d

dt2[, dt1[], by = c][, found := 0][dt3, found := 1, on = c('a', 'c')][]
#    c a b found
# 1: a 1 4     0
# 2: a 2 3     0
# 3: a 3 2     0
# 4: a 4 1     1
# 5: b 1 4     0
# 6: b 2 3     0
# 7: b 3 2     0
# 8: b 4 1     0
# 9: c 1 4     0
#10: c 2 3     1
#11: c 3 2     0
#12: c 4 1     0
#13: d 1 4     0
#14: d 2 3     0
#15: d 3 2     0
#16: d 4 1     1

请注意 - data.table 中存在某种奇怪的错误,无法让我简单地执行 dt2[, dt1, by = c]