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
--opprint
stats1
-a p90,max
-f 2
-g 1
-i
label