각 고유 ID($1)에 대한 측정값의 표준 편차($2)를 인쇄해야 합니다.
데이터는 다음과 같습니다.
101 560
101 460
101 530
101 480
104 600
104 510
104 500
107 450
107 490
107 550
107 500
답변1
R이나 datamash가 더 나은 선택일 수 있습니다!
표준편차의 정의에 따르면 다음과 같이 할 수 있습니다.
$ cat my-sd
#!/usr/bin/awk -f
{ s[$1]["sum"] += $2 ;
n = s[$1]["oco"] ++;
v[$1][n]=$2 }
END { for(x in s){
m=s[x]["sum"]/s[x]["oco"];
s1=0;
for(y in v[x]){
s1 += (v[x][y]-m)*(v[x][y]-m);}
print x, sqrt(s1/s[x]["oco"])}
}
$ my-sd example
101 39.6074
104 44.9691
107 35.6195