From: lionbarrage Date: 2009-03-14T02:02:55+09:00 Subject: Re: Please help with fixing output On Mar 6, 10:04 am, lionbarrage wrote: > On Mar 5, 4:43 pm, "William James" wrote: > > > > > lionbarrage wrote: > > > The original files are: > > > File 1 > > > ALPHA|OMEGA|GAMMA > > > 1|2|3 > > > 4|5|6 > > > > File 2 > > > EPSILON|GREEK|OMEGA|BETA > > > 7|8|9|0 > > > 12||13| > > > 10|11|5|15 > > > > and I'm using the following code: > > > >  sets = Hash.new { | h, k | h[k] = [] } # hash that contains a new > > > array > > >                                         # for every new key > > >  %w(file1.txt file2).each do | filename | > > >    File.open(filename) do | f | > > >      names = f.gets.chop.split('|') > > >      f.each do | line | > > >        names.zip(line.chop.split('|')).each do | name, value | > > >          sets[name] << value.to_i if value and value !~ /^\s*$/ > > >        end > > >      end > > >    end > > >  end > > > >  sets.values.each { | a | a.uniq! } > > > >  puts sets.keys.map { | k | '%8s ' % k }.join('|') > > > >  rows = sets.values.map { | a | a.size }.max > > > >  (1..rows).zip(*sets.values) do | row | > > >   row.shift > > >    puts row.map { | v | if v then '%8s ' % v else ' '*9 end }.join > > > ('|') > > > end > > > > but the output seems a little strange and I'm not sure why that is. > > > > Output should be > > >    ALPHA | OMEGA |   GAMMA | EPSILON |   GREEK |    BETA > > >        1 |       2 |       3 |         |         | > > >        4 |       5 |       6 |    10   |      11 |       15 > > >          |       9 |         |      7  |       8 |        0 > > >          |      13 |         |      12 |         | > > > This doesn't look right.  Consider the Epsilon column. > > In the file the column is > > > 7 > > 12 > > 10 > > > And you want the output to be > > > 10 > > 7 > > 12 > > Ahh, I see where it causes confusion.  The idea is to combine the two > columns using Omega. > > So the row > ALPHA|OMEGA|GAMMA > 4|5|6               in file 1 and the row > EPSILON|GREEK|OMEGA|BETA > 10|11|5|15 > in file 2 gets combined but the rest, who don't have a match in the > other file, does not. I am still confused on how to do this. Tried using SQL Lite but Full outer joins are not supported. Any ideas would be great! Thanks!