i have a dataset as file:
1 aaa 1
1 aaa 3
1 aaa 5
1 ccc 9
1 ccc 2
1 ccc 2
1 ddd 4
1 ddd 6
1 ddd 8
1 ddd 1
2 ddd 5
2 ddd 12
2 ddd 13
i want to standard deviation of grouped data:
for examles at
1 aaa
have 1,3,5 values. std of these is 2,00
at
2 ddd
have 5,12,13 values. std of these is ~ 4,36
i have tried,
awk 'BEGIN{ FS=OFS="\t" }
NR==FNR{
a[$1,$2]+=$3
next
}
{delta = $3 - avg; avg += delta / NR; mean2 += delta * ($3 - avg); }
{ $(NF+1)=sqrt(mean2 / NR) }
1
' file file
Desired output:
1 aaa 1 2,00
1 aaa 3 2,00
1 aaa 5 2,00
1 ccc 9 4,04
1 ccc 2 4,04
1 ccc 2 4,04
1 ddd 4 2,99
1 ddd 6 2,99
1 ddd 8 2,99
1 ddd 1 2,99
2 ddd 5 4,36
2 ddd 12 4,36
2 ddd 13 4,36