Quelqu’un sait comment puis-je calculer la moyenne d’une de ces colonnes (sous Linux)?
sda 2.91 20.44 6.13 2.95 217.53 186.67 44.55 0.84 92.97 sda 0.00 0.00 2.00 0.00 80.00 0.00 40.00 0.22 110.00 sda 0.00 0.00 2.00 0.00 144.00 0.00 72.00 0.71 100.00 sda 0.00 64.00 0.00 1.00 0.00 8.00 8.00 2.63 10.00 sda 0.00 1.84 0.31 1.38 22.09 104.29 74.91 3.39 2291.82 sda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Par exemple: signifie (colonne 2)
Awk:
awk '{ total += $2 } END { print total/NR }' yourFile.whatever
Lire comme:
Solution Perl:
perl -lane '$total += $F[1]; END{print $total/$.}' file
-a
automatiquement la ligne dans le tableau @F, indexé à partir de 0
$.
est le numéro de ligne
Si vos champs sont séparés par des virgules au lieu des espaces:
perl -F, -lane '$total += $F[1]; END{print $total/$.}' file
Pour imprimer les valeurs moyennes de toutes les colonnes, atsortingbuez des totaux au tableau @t:
perl -lane 'for $c (0..$#F){$t[$c] += $F[$c]}; END{for $c (0..$#t){print $t[$c]/$.}}'
sortie:
0 0.485 14.38 1.74 0.888333333333333 77.27 49.8266666666667 39.91 1.29833333333333 434.131666666667
Vous pouvez utiliser python pour cela, est disponible sous Linux.
Si cela vient d’un fichier, jetez un oeil à cette question , utilisez simplement float à la place.
Par exemple:
#mean.py def main(): with open("mean.txt", 'r') as f: data = [map(float, line.split()) for line in f] columnTwo = [] for row in data: columnTwo.append( row[1] ) print sum(columnTwo,0.0) / len( columnTwo ) if __name__=="__main__": main()
Prints 14.38
Je viens d’inclure les données dans le fichier mean.txt, pas l’en-tête de la ligne: “sda”
David Zaslavsky pour le plaisir:
with open("mean.txt", 'r') as f: n,t = map(sum, zip(*((1, float(line.split()[1])) for line in f))) print t/n
Simple-r calculera la moyenne avec la ligne suivante:
r -k2 mean file.txt
pour la deuxième colonne. Il peut également effectuer des parsings statistiques beaucoup plus sophistiquées, car il utilise l’ environnement R pour toutes ses parsings statistiques.