Calcule o valor percentil e máximo por variável

0

Bash Gurus, eu preciso calcular os números máximos e percentuais para cada item na lista, usando o awk

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

Saída esperada

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

Como posso fazer isso?

meu código:

 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] } '
    
por Pradeep BS 09.11.2016 / 08:14

1 resposta

0

Usando Miller :

$ 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

O --inidx é para entrada posicionalmente indexada; --repifs desde que o espaço em branco é repetido entre colunas; --opprint para saída tabular. stats1 agregando p90 e max ( -a p90,max ) no campo 2 ( -f 2 ) agrupados pelo campo 1 ( -g 1 ); -i para percentis interpolados. Então, label pode ser usado para renomear colunas personalizadas.

    
por 11.11.2016 / 13:49