私は各カラムが一意のサンプルを表し、各行が遺伝子名に対応する多くのデータファイルを持っています。ここに私の小さなファイルの一つのサンプルです:最初の列にAWK:重複したエントリの異なる値を平均で置き換えます。
MAPK3 9.49707613464767 9.34083460789419 9.12918870414545
TIE1 5.12900020712651 5.15008091018047 5.15008091018047
CYP2C19 3.80757247946463 3.80757247946463 3.87721584865861
CXCR5 6.40745840005515 6.40745840005515 6.40745840005515
CXCR5 6.04763929379884 6.13038198258514 6.13038198258514
DUSP1 12.0320377077951 12.7960658385305 12.625340661444
MMP10 4.1933379022831 4.1933379022831 4.1933379022831
RXRG 4.33755505408386 4.32903686336417 4.32903686336417
RXRG 6.91141485189572 6.96893082690402 6.96893082690402
お知らせ、遺伝子名CXCR5
とRXRG
が複製されているが、各エントリの値が異なっています。
MAPK3 9.49707613464767 9.34083460789419 9.12918870414545
TIE1 5.12900020712651 5.15008091018047 5.15008091018047
CYP2C19 3.80757247946463 3.80757247946463 3.87721584865861
CXCR5 6.22754884693 6.2689201913201 6.2689201913201
DUSP1 12.0320377077951 12.7960658385305 12.625340661444
MMP10 4.1933379022831 4.1933379022831 4.1933379022831
RXRG 5.6244849529898 5.6489838451341 5.6489838451341
重複遺伝子の値が平均化され
サンプルあたり、元のエントリを置き換える:私は必要な出力ファイルは次のようになります。さらに、ユニークな遺伝子名と値をそのまま残しておきたい。明らかにするために、カラム1では重複する遺伝子名ごとに、列ごとではなく行全体で平均値を求めたくありません。 ここでは、calculate and print the average value of strings in a columnのように巧妙なawk one-linersを利用しようとしましたが、 Average from different columns in shell script。しかし、私は100のサンプル/列を持つことができる私のファイルを説明するコマンドを一般化するのに問題があります。そして彼らは私のユニークな遺伝子名を不必要に混乱させます。
私の初心者レベルのコーディングスキルが私の死になります!助言がありますか?救助へ
おかげ
これは私が探していたものです。コードについて説明してください。 –
最初の行は、ファイル内の最初の値に基づいて使用している精度を計算します。この値は、他のすべての計算に使用されます。 2行目は、前のキーに関連付けられた値を出力するためにキー値が変更されたときにprt()を呼び出します。次のブロック(現在のキーが前のキーと同じであるたびに実行される)は、各フィールドの値を合計し、そのキーを持つ行の数が読み取られた回数を保持します。 ENDセクションは、読み込まれた最後のキーの値を出力するためにprt()を呼び出します。 prt()関数は値を出力します。 –