Подтвердить что ты не робот

Как вычислить среднее значение столбца

Кто-нибудь знает, как я могу вычислить среднее значение одного из этих столбцов (по 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  

Например: среднее (столбец 2)

4b9b3361

Ответ 1

Awk:

awk '{ total += $2 } END { print total/NR }' yourFile.whatever

Читайте как:

  • Для каждой строки добавьте столбец 2 к переменной "total".
  • В конце файла напечатайте "total", деленное на количество записей.

Ответ 2

Решение Perl:

perl -lane '$total += $F[1]; END{print $total/$.}' file

-a autosplits строка в массив @F, который индексируется начиная с 0
$. - номер строки

Если ваши поля разделяются запятыми, а не пробелами:

perl -F, -lane '$total += $F[1]; END{print $total/$.}' file

Чтобы напечатать средние значения всех столбцов, присвойте итоговые значения массиву @t:

perl -lane 'for $c (0..$#F){$t[$c] += $F[$c]}; END{for $c (0..$#t){print $t[$c]/$.}}' 

выход:

0
0.485
14.38
1.74
0.888333333333333
77.27
49.8266666666667
39.91
1.29833333333333
434.131666666667

Ответ 3

Вы можете использовать python для этого, он доступен в Linux.

Если это происходит из файла, посмотрите question, вместо этого используйте float.

Например:

#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()

Печать 14.38

Я просто включаю данные в файл mean.txt, а не заголовок строки: "sda"

Ответ 4

Давид Заславский для удовольствия:

with open("mean.txt", 'r') as f: 
    n,t = map(sum, zip(*((1, float(line.split()[1])) for line in f)))
print t/n

Ответ 5

Simple-r рассчитает среднее значение со следующей строкой:

r -k2 mean file.txt

для второго столбца. Он также может выполнять гораздо более сложный статистический анализ, поскольку он использует среду R для всего своего статистического анализа.