タブ区切りの行列の収集と生成

タブ区切りの行列の収集と生成

6つのテキストファイル(それぞれは特定の例に対応)があり、各ファイルは次のとおりです。

Gene_ID Gene_Name   Strand  Start   End Length  Coverage    FPKM    TPM
ENSMUSG00000102735  Gm7369  +   4610471 4611406 936 0   0   0
ENSMUSG00000025900  Rp1 -   4290846 4409241 10926   0   0   0
ENSMUSG00000104123  Gm37483 -   4363346 4364829 1484    0   0   0
ENSMUSG00000102175  Gm6119  -   4692219 4693424 1206    0.328358    0.015815    0.008621

列1と2のすべての要素を1つのファイルに収集し、各サンプルに対応するtpm値(列9)を新しいファイルに収集したいので、tpm値がない場合は常に0を入力します。

私の出力ファイルは次のようになります。

gene_id gene_name sample1_tpm sample2_tpm sample3_tpm ......sample6_tpm

ベストアンサー1

awkこのソリューションは、gene_idとgene_nameでインデックス付けされた配列の6つの入力ファイルの両方からTPM値を収集し、file1最後file6に各配列インデックスに対してマージされたTPM値を印刷するために使用されます。欠落しているTPM値は0に置き換えられます。

awk ' BEGIN { f=0 } { if ($1 == "Gene_ID") { f++; getline; } i = $1 " " $2 row[i] = row[i] " " (($9 == "") ? "0" : $9) } END { for (i in row) print i,row[i] } ' file1 file2 file3 file4 file5 file6

おすすめ記事