Как рассчитать среднее значение столбца - PullRequest
29 голосов
/ 26 июня 2010

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

Ответы [ 5 ]

68 голосов
/ 26 июня 2010

Awk:

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

Читается как:

  • Для каждой строки добавьте столбец 2 к переменной 'total'.
  • В концефайл, выведите «total», деленное на количество записей.
3 голосов
/ 15 сентября 2015

Решение Perl:

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

-a автоматически разбивает строку в массив @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]/$.}}' 

output:

0
0.485
14.38
1.74
0.888333333333333
77.27
49.8266666666667
39.91
1.29833333333333
434.131666666667
1 голос
/ 26 июня 2010

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

Если это происходит из файла, взгляните на этот вопрос , просто используйте вместо него 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"

0 голосов
/ 01 октября 2013

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

r -k2 mean file.txt

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

0 голосов
/ 26 июня 2010

Давид Заславский в шутку:

with open("mean.txt", 'r') as f: 
    n,t = map(sum, zip(*((1, float(line.split()[1])) for line in f)))
print t/n
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...