次のデータファイルがあります。
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