各変数のパーセンタイルと最大値を計算します。

各変数のパーセンタイルと最大値を計算します。

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

おすすめ記事