マージされたfeatureCountsのRNAseqデータセットがあります。 3つの条件と3つの反復があります。 5つ以上の列から遺伝子発現値が3未満の行を削除したいと思います。
以下は私のデータセットの例です。
Gene_id. M1 M2 M3 W1 W2 W3 S1 S2 S3
ENSMUSG00000102693 18 4 5 8 0 2 1 0 0
ENSMUSG00000064842 1 0 0 0 0 0 1 1 2
ENSMUSG00000051951 25 23 32 54 78 77 48 56 33
ENSMUSG00000102851 0 0 0 0 0 0 0 0 0
ENSMUSG00000103377 0 10 0 2 5 0 6 7 8
他の分析ツールから追加のDE分析のためにこのデータセットをインポートしたいと思います。
答え1
私があなたの質問を理解する限り、あなたは
awk '{
count=0
for (i=2; i<=NF; i++) if ($i < 3) count++
if (count < 5) print
}'
各行に対してカウンタを0に設定します。次に、最初の(遺伝子ID)を除く各フィールド(列)を見て、3より小さい場合は数を数えます。その後、数が5未満の場合は、その行を印刷します。 5つ以上の列に3より小さい値がある場合は、その行をスキップします(つまり削除)。
1行に折りたたむ必要がある場合は、;
ステートメントの後にセミコロン()を追加する必要があります(上記のバージョンでは改行文字があった場所です)。
awk '{ count=0; for (i=2; i<=NF; i++) if ($i < 3) count++; if (count < 5) print; }'