Are you familiar with the statistical programming language
R? You can use
Statistics::R to take advantage of the
merge function of R to merge two tables based on a specific column(s). If you don't already know R, this might be a time-sink.
Alternatively, you could make two hashes of arrays (one for each of tables 1 & 2) and iterate through them to output Table 3. Here is the hash structure for the second example you gave:
my %table_1 = (
0 => [ [ 1, 1 ], [ 0, 2 ] ],
1 => [ [ 1, 3 ] ],
);
my %table_2 = (
0 => [ [ 0, 0, 1 ] ],
1 => [ [ 1, 0, 1 ], [ 0, 1, 0 ] ],
);