-1

私は 2890 人の個人の遺伝子マーカーの膨大なファイルを持っています。このファイルを転置したいと思います。私のデータのフォーマットは次のとおりです: (ここでは6つのマーカーを示しました)

ID rs4477212 kgp15297216 rs3131972 kgp6703048 kgp15557302 kgp12112772 ..... 
BV04976 0 0 1 0 0 0 
BV76296 0 0 1 0 0 0 
BV02803 0 0 0 0 0 0 
BV09710 0 0 1 0 0 0 
BV17599 0 0 0 0 0 0 
BV29503 0 0 1 1 0 1 
BV52203 0 0 0 0 0 0 
BV61727 0 0 1 0 0 0 
BV05952 0 0 0 0 0 0 

実際、テキスト ファイルには 1,743,680 列と 2890 行があります。それを転置する方法は?出力が次のようになることを望みます:

ID BV04976 BV76296 BV02803 BV09710 BV17599 BV29503 BV52203 BV61727 BV05952  
rs4477212 0 0 0 0 0 0 0 0 0 
kgp15297216 0 0 0 0 0 0 0 0 0 
rs3131972 1 1 0 1 0 1 0 1 0 
kgp6703048 0 0 0 0 0 1 0 0 0 
kgp15557302 0 0 0 0 0 0 0 0 0 
kgp12112772 0 0 0 0 0 1 0 0 0
4

2 に答える 2

3

おそらく 100 のファイルに対して複数のパスを作成し、各パスで 1743680/パスの列を取得し、各パスの最後にそれらを (行として) 書き出します。

データを配列の配列ではなく、配列内の文字列にアセンブルして、メモリ使用量を減らし、パスを減らします。各パスの開始時に各文字列にスペースを事前に割り当てること (例: $new_row[13] = ' ' x 6000; $new_row[13] = '';) は、役立つ場合とそうでない場合があります。

于 2013-11-07T18:14:44.510 に答える