Rubyで処理している染色体データのファイルがあるとしましょう。
#Base_ID    Segment_ID      Read_Depth  
1                           100            
2                           800         
3           seg1            1900            
4           seg1            2700           
5                           1600            
6                           2400            
7                           200
8                           15000
9           seg2            300
10          seg2            400
11          seg2            900
12                          1000
13                          600
... 
各行を配列のハッシュに貼り付けており、キーは列2のSegment_IDから取得され、値は列3のRead_Depthから取得されています。
mr_hashy = { 
  "seg1"  => [1900, 2700],
  ""      => [100, 800, 1600, 2400, 200, 15000, 1000, 600],
  "seg2"  => [300, 400, 900],
}
上記のデータの2つの連続した行で構成される小さなセグメントであるプライマーは、各通常のセグメントの前に追加され、その後に続きます。通常のセグメントには、Segment_IDの空でない文字列値があり、長さが異なりますが、2番目の列に空の文字列がある行はプライマーの一部です。プライマーセグメントの長さは常に同じです。2。上記のように、Base_IDの1、2、5、6、7、8、12、13はプライマーの一部です。上記のデータには、合計で4つのプライマーセグメントがあります。
私がやりたいのは、列2のSegment_IDに空の文字列が含まれる行に遭遇したら、ハッシュの適切な要素にREAD_DEPTHを追加することです。たとえば、上記の私の望ましい結果は次のようになります
mr_hashy = {
  "seg1"   => [100, 800, 1900, 2700, 1600, 2400],
  "seg2"   => [200, 15000, 300, 400, 900, 1000, 600],
}