同じデータファイル内の他の列の情報に基づいて列にいくつかの値を蓄積する方法は?

同じデータファイル内の他の列の情報に基づいて列にいくつかの値を蓄積する方法は?

次のデータファイルがあります。

c1.11   SNP1    -6.73098    0.764833    Chr1:1
c1.21   SNP2    -4.871  0.00393002  Chr1:101
c1.12   SNP3    -0.766822   0.0891227   Chr1:201
c1.22   SNP4    11.7499 0.141861    Chr1:301
c2.11   SNP5    8.38008 0.741379    Chr1:401
c2.21   SNP6    -0.86974    0.00824037  Chr1:501
c2.12   SNP7    -0.181898   0.00494422  Chr1:601
c2.22   SNP8    -7.32856    0.245436    Chr1:701
c3.11   SNP9    -12.0418    0.369929    Chr1:801
c3.12   SNP10   11.2833 0.357378    Chr1:901
c3.22   SNP11   -0.0308993  0.270918    Chr1:1001
c4.121  SNP12   1.51586 0.0770791   Chr1:1101
c4.122  SNP13   0.118888    0.0742901   Chr1:1201

私がしたいのは、最初の列と同じグループに属する3番目の列に値を累積することです。たとえば、最初の4つの値はグループc1に属し、次の4つの値はグループc2に属しているため、新しい出力は次のようになります。

 Output :
c1 -0.61778
c2  0.00845
c3 -0.7875
c4 1.6347

どんな提案がありますか? (実際のデータが膨大であることを考慮してください。

ベストアンサー1

そしてGNUデータの混合(ピリオドをスペースで置き換えてから使用sed

sed 's/\./ /' data | datamash -W groupby 1 sum 4
c1      -0.618902
c2      -0.000118
c3      -0.7893993
c4      1.634748

おすすめ記事