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


FunkyMonk


The reference to $#col_num was mistyped - the reference
was actually $#col_count. I did use the strict and
warnings pragmas, but as the reference was correct they
did not come into play.


I understand this code. What I don't understand is how
to use the columns in each row to calculate an average
for the row.

  • Comment on Re^2: Calculating Row Averages From a CSV File

Replies are listed 'Best First'.
Re^3: Calculating Row Averages From a CSV File
by FunkyMonk (Bishop) on Aug 15, 2007 at 12:11 UTC
    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


      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