サイズは約1.3GBで、300個の列と100万個を超える行を持つgene.csvファイルがあります。下のように見える
id1 id2 id3 id4 count1 count2
S1001 450 GAF ARHGAP18 1.56E-05 1483
S1001 450 GAF ARHGAP12 5E-05 3698
S1001 450 GAF ARHGAP15 2.75E-06 93
S1001 450 GAF ARHGAP17 3E-05 1889
S1001 450 GAF ARHGAP19 4.291E-06 596
S1002 450 GAF ARHGAP18 5.955E-05 5353
S1002 450 GAF ARHGAP12 8.578E-08 14
S1002 450 BAF ARHGAP15 2.91E-05 5381
S1002 450 BAF ARHGAP17 1.78E-06 105
S1002 450 BAF ARHGAP19 3.62E-05 5764
S1003 450 BAF ARHGAP18 5.2697E-06 330
S1003 450 BAF ARHGAP12 5.955E-05 2263
S1003 450 BAF ARHGAP15 8.578E-08 3147
S1003 450 CAF ARHGAP17 2.91E-05 50
S1003 450 CAF ARHGAP19 5.955E-05 1595
S1004 450 CAF ARHGAP18 8.578E-08 970
S1004 450 CAF ARHGAP12 2.91E-05 816
S1004 450 CAF ARHGAP15 5.955E-05 4981
S1004 450 CAF ARHGAP17 8.578E-08 816
S1004 450 CAF ARHGAP19 2.91E-05 4981
次の形式でid1、id4、およびcount2データ(行列)を取得したいと思います。
id4 S1001 S1002 S1003 S1004
ARHGAP18 1483 5353 330 970
ARHGAP12 3698 14 2263 816
ARHGAP15 93 5381 3147 4981
ARHGAP17 1889 105 50 816
ARHGAP19 596 5764 1595 4981
新しいファイルの列名で一度だけ繰り返すだけです(id1はすべての遺伝子のすべての行で繰り返されるためです)。単純なbashコマンド(遺伝子名(行)とサンプルID(列)の行列)からこの情報をどのように取得できますか?
答え1
Millerで使用形状の変更
mlr --tsv cut -o -f id4,id1,count2 then reshape -s id1,count2 input.tsv
あなたはやる
id4 S1001 S1002 S1003 S1004
ARHGAP18 1483 5353 330 970
ARHGAP12 3698 14 2263 816
ARHGAP15 93 5381 3147 4981
ARHGAP17 1889 105 50 816
ARHGAP19 596 5764 1595 4981
TSVファイルを入出力に設定しました。テキストファイルはタブで区切られていますか?
いくつかのコメント:
--tsv
入出力形式を設定することです。cut
id4、id1、count2のみを抽出します。reshape
構造を修正することです。
答え2
あなたが要求した交差表(またはピボットテーブル)。これを使用して達成できます。GNUデータの混合
datamash --header-in --whitespace crosstab id4,id1 unique count2 < file
S1001 S1002 S1003 S1004
ARHGAP12 3698 14 2263 816
ARHGAP15 93 5381 3147 4981
ARHGAP17 1889 105 50 816
ARHGAP18 1483 5353 330 970
ARHGAP19 596 5764 1595 4981
--whitespace
(データがタブで区切られている場合はスキップできます。)
ただし、作業に適した専用のバイオインフォマティクスツールがあるかもしれません。