下記のような座標を持つファイルをrubyで処理したいのですが、どのようにしたらいいか検討がつかず頓挫しています。アイデアを頂けますか。

処理前

group   start   end id  distance    value1  value2
A   5817    7756    id1 1939    0   3
A   5817    7754    id2 1937    -2  1
A   5817    7752    id3 1935    -4  1
A   5817    7747    id4 1930    -9  1
A   5817    10699   id5 1938    -50 1
A   5819    7756    id6 1937    -2  1
A   5819    7755    id7 1936    -3  1
A   5828    7756    id8 1928    -11 1
A   5983    8180    id9 2197    1   2
A   5983    8175    id10    2192    -5  2
A   5983    8174    id11    2191    -6  1
A   5984    8175    id12    2191    -6  1

上記のような重なりを持つ座標に関して、例として

(id2;end – id1;end) – (id2;start – id1;start) = id2;value1
(id3;end – id1;end) – (id3;start – id1;start) = id3;value1

というような条件を満たせば、id1とid2及びid3は同じグループに所属するとみなし、グループ内で一番大きいvalue1を持つid1のvalue2にそのカウントを足していきたいのです。

処理後

group   start   end id  length  value1  value2
A   5817    7756    id1 1939    0   9
A   5817    10699   id5 1938    -50 1
A   5983    8180    id9 2197    1   5

以上、ご教示の程、宜しくお願いいたします。