2015-06-15 3 views
-1

Я хочу рассчитать среднее значение 5-го столбца (последний столбец), исключая строки со значением «9999». Буду признателен за ваши отзывы.Поиск среднего значения столбца, исключая определенные строки с использованием AWK

77.300 16 1 3.6112914285714268 9.4 
77.300 16 2 -0.001737142857145102 20.0 
77.300 16 3 5.1570742857142857 8.9 
77.300 17 0 3.6112914285714268 8.9 
77.300 17 1 2.9484342857142849 11.7 
77.300 17 2 -0.001737142857145102 22.6 
77.300 17 3 3.5098971428571417 9.2 
77.300 18 0 3.5098971428571417 9.4 
77.300 18 1 2.9484342857142849 14.0 
77.300 18 2 -0.001737142857145102 24.7 
77.300 18 3 3.5098971428571417 9.4 
77.650 13 0 3.2896914285714267 9.4 
77.650 13 1 0.0042514285714272404 24.9 
77.650 13 2 2.0769371428571421 9.1 
77.650 13 3 0.0042514285714272404 99999 
77.650 14 0 1.8255085714285713 9.3 
77.650 14 1 0.0042514285714272404 99999 
77.650 14 2 1.8255085714285713 9.2 
77.650 14 3 0.0042514285714272404 99999 
77.650 15 0 3.2896914285714267 8.7 
77.650 15 1 4.2542171428571418 8.7 
+6

Поскольку вы используете [awk] в качестве тега, у вас могут быть некоторые знания об этом. Отправьте свои попытки, чтобы мы могли помочь вам решить проблему. – fedorqui

ответ

2

Через AWK,

$ awk '$5!="99999"{sum+=$5}END{print sum}' file 
227.5 

Объяснение:

  • $5!="99999" если пятый столбец не содержит 99999, а затем сделать

  • {sum+=$5} добавление значения 5-го столбца к переменной sum. Аналогично, он продолжает добавлять значение 5-го столбца, когда awk видит запись, которая удовлетворяет заданному условию.

  • Наконец, напечатайте переменную sum в конце.

Для среднего.

$ awk '$5!="99999"{sum+=$5;cnt++}END{print (cnt?sum/cnt:"NaN")}' file 
12.6389 
+1

Я, ты прав. Принцип поцелуя. –

Смежные вопросы