リストの平均、標準偏差、標準誤差、値の数の決定

リストの平均、標準偏差、標準誤差、値の数の決定

data.txt2つの列と80,667行を含むというテキストファイルがあります。最初の20行はすべての行を表します。

  Column A     Column B

ACKR1/CCRL2     12.66
ACKR1/CMKLR1    10.41
ACKR1/CXCR4     13.01
ACKR1/FZD5      10.72
ACKR1/GPR107    10.22
ACKR1/GPR137    10.73
ACKR1/GPR146    11.93
ACKR1/TAPT1     11.24
ACKR1/TPRA1     11.81
ACKR1/XPR1      10.01
ACKR2/ACKR3     9.36
ACKR2/ACKR3     10.48
ACKR2/ACKR3     11.08
ACKR2/ACKR3     11.11
ACKR2/ACKR3     11.38
ACKR2/ACKR3     11.73
ACKR2/ACKR3     12.97
ACKR2/ADGRA2    8.68
ACKR2/ADGRA2    9.03
ACKR2/ADGRA2    9.34

ご覧のとおり、列Aに重複した値があります(例:ACKR2 / ACKR3、ACKR2 / ADGRA2)。私が望むのは、results.txt固有値の平均、標準偏差、および標準エラーとその場所を含む他のファイルを作成することですdata.txt

   Value         Avg    Stdev    StdErr    Count

ACKR1/CCRL2     12.66    -         -         1
ACKR1/CMKLR1    10.41    -         -         1
ACKR1/CXCR4     13.01    -         -         1
ACKR1/FZD5      10.72    -         -         1
ACKR1/GPR107    10.22    -         -         1
ACKR1/GPR137    10.73    -         -         1
ACKR1/GPR146    11.93    -         -         1
ACKR1/TAPT1     11.24    -         -         1 
ACKR1/TPRA1     11.81    -         -         1
ACKR1/XPR1      10.01    -         -         1
ACKR2/ACKR3     11.46   0.84      0.35       7
ACKR2/ADGRA2    8.69    0.33      0.19       3

標準偏差と標準誤差は段階別にうまくいきませんが、一つぐらいは得ればいいようです。

私は生物学者なので、UNIXスクリプトを書くのはうまくいきません。どこから始めるべきかわかりません。助けてくれてありがとう。以前に同様の質問に対する回答があった場合は申し訳ありません。検索しましたが、何も見つかりませんでした。

とても感謝しています!

ベストアンサー1

StdevとSterrの計算は不明です。ただし、この方法では簡単に計算できます。

$ awk '{A[$1]++;B[$1]+=$2}END{print "Value\t\tAvg\tCount";for (i in A){print i"\t"B[i]/A[i]"\t"A[i]}}' input.txt
Value           Avg     Count
ACKR2/ADGRA2    9.01667 3
ACKR1/GPR107    10.22   1
ACKR1/XPR1      10.01   1
ACKR1/CMKLR1    10.41   1
ACKR1/CCRL2     12.66   1
ACKR1/GPR146    11.93   1
ACKR1/GPR137    10.73   1
ACKR1/CXCR4     13.01   1
ACKR2/ACKR3     11.1586 7
ACKR1/TPRA1     11.81   1
ACKR1/FZD5      10.72   1
ACKR1/TAPT1     11.24   1

awk '{
A[$1]++;B[$1]+=$2
}
END
{
print "Value\t\tAvg\tCount";
for (i in A)
{
print i"\t"B[i]/A[i]"\t"A[i]
}
}'  input.txt

おすすめ記事