in reply to Re^2: Calculating Row Averages From a CSV File
in thread Calculating Row Averages From a CSV File

Place this after shift @f.
my $row_sum; @f = grep { $_ } @f; $row_sum += $_ for @f; print "Row average = ", $row_sum / @f, "\n";

Given:

AAA01,0,0,0,0,0,1 AAA02,0,0,0,0,1,2

produces:

Row average = 1 Row average = 1.5

update: Fixed error pointed out here by rayv

Replies are listed 'Best First'.
Re^4: Calculating Row Averages From a CSV File
by rayv (Novice) on Aug 15, 2007 at 13:30 UTC

    FunkyMonk,


    I looked at your snippet. This code will not exclude 0's from the average calculation.

      This input:

      AAA01,0,0,0,0,0,1 AAA02,0,0,0,0,1,1

      gives this output:

      Row average = 0.166666666666667 Row average = 0.333333333333333

      Looks about right to me ;)

      Perhaps I should explain the following line:

      $_ and $row_sum += $_

      This says "If $_ is true (ie non-zero1), add it to $row_sum".


      1 There's more to true and false than I've implied here


        Your input

        AAA01,0,0,0,0,0,1 AAA02,0,0,0,0,1,1

        should give this output

        Row average = 1 Row average = 1