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: moyenne (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
fractionne automatiquement la ligne dans le tableau @F, qui est indexé à partir de 0$.
est le numéro de ligne
Si vos champs sont séparés par des virgules au lieu d'espaces:
Perl -F, -lane '$total += $F[1]; END{print $total/$.}' file
Pour imprimer les valeurs moyennes de toutes les colonnes, affectez des totaux au tableau @t:
Perl -lane 'for $c (0..$#F){$t[$c] += $F[$c]}; END{for $c (0..$#t){print $t[$c]/$.}}'
production:
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 provient d'un fichier, jetez un œil à ceci 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()
Impressions 14,38
J'inclus simplement les données dans le fichier mean.txt, pas l'en-tête de ligne: "sda"
Simple-r calculera la moyenne avec la ligne suivante:
r -k2 mean file.txt
pour la deuxième colonne. Il peut également effectuer une analyse statistique beaucoup plus sophistiquée, car il utilise environnement R pour toutes ses analyses statistiques.
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