각 변수의 백분위수와 최대값을 계산합니다.

각 변수의 백분위수와 최대값을 계산합니다.

Bash 전문가님, awk를 사용하여 목록에 있는 각 항목의 최대 수와 백분위수를 계산해야 합니다.

aa  1
ab  3
aa  4
ac  5
aa  3
ad  2
ab  4
ac  2
ae  2
ac  5

예상 출력

Item   90th percentile   max value
aa     3.8             4
ab     3.9             4
ac     5               5
ad     2               2
ae     2               2

어떻게 해야 하나요?

내 코드:

 awk '{ item[$1]++; count[$1]+=$2; max[$1]=$2; percentile[$1,.9]=$2 } 
END{ for (var in item) print var,count[var],max[var],percentile[var] } '

답변1

사용밀러:

$ cat my.dat | mlr --inidx --repifs --opprint stats1 -i -a p90,max -f 2 -g 1 \
  then label 'Item,90th percentile,max value'
Item 90th percentile max value
aa   3.800000        4
ab   3.900000        4
ac   5.000000        5
ad   2               2
ae   2               2

테이블 형식 출력에 사용되는 열 사이의 반복되는 공백으로 인해 --inidx위치 인덱스 입력 에 사용됩니다 . 필드 2( )에서 p90 및 max( )를 집계하고 보간된 백분위수에 대해 필드 1( )별로 그룹화합니다. 그런 다음 이를 사용자 정의 열 이름 바꾸기에 사용할 수 있습니다.--repifs--opprintstats1-a p90,max-f 2-g 1-ilabel

관련 정보