次の形式のデータセットがあります。
snp,T2DG0200001,T2DG0200002,T2DG0200003,T2DG0200004
3_60162,AA,AA,AA,AA
3_61495,AA,AA,GA,GA
3_61466,GG,GG,CG,CG
実際のデータはこれよりはるかに大きく、数百万行と約1,000列に拡張されます。私の最終的な目標は、この怪物を転置し、結果をテキストファイル(またはCSVファイルなど)で出力することです。
メモリが過負荷にならないように、データを1つずつコンピュータにフィードする必要があります。CSVファイルを1行ずつ読み取り、転置してファイルに書き込みます。次に、ループバックして手順を繰り返し、テキストファイルに追加します。
もちろん問題は、結果が元のデータファイルの転置である場合、テキストファイルを行ではなく列ごとに追加することになっていることです。しかし、友人は、Perlコードでは実行不可能だと私に言いました。データを列ごとに読み取ることができるかどうか疑問に思っています。元のコードで使用したgetline
方法など、似たようなものはありますか?
while (my $row = $csv->getline ($fh)) {
行の代わりに列を返すことができますか?cut
データ全体をメモリにロードする必要がない場合は、Unixコマンドに似たものが望ましいでしょう。