Re^2: get the average of hash values?

by BioLion (Curate)
 on Jul 28, 2010 at 12:52 UTC ( #851709=note: print w/replies, xml ) Need Help??

in reply to Re: get the average of hash values?
in thread get the average of hash values?

Or you could do a hash of arrays (perldsc) and use List::Util to generate the required results:

```use strict;
use warnings;
use List::Util qw{sum min max};

my %data;
while (<DATA>) {
chomp;
my (\$id, \$value) = split /,/;
push @{ \$data{\$id} }, \$value; # store values as HoA
}

for my \$id (sort keys %data) {
print "\$id:  " . summarise(\$data{\$id});
}

sub summarise{
my \$arr = shift;
return "max=" . max( @\$arr )
. " min=" . min( @\$arr )
. " sum=" . sum( @\$arr )
. " mean=" . ( sum( @\$arr )/scalar@\$arr )
. "\n";
}
__DATA__
A,10
A,11
A,12
A,13
B,15
B,16
C,17
D,18

Gives:

```A:  max=13 min=10 sum=46 mean=11.5
B:  max=16 min=15 sum=31 mean=15.5
C:  max=17 min=17 sum=17 mean=17
D:  max=18 min=18 sum=18 mean=18

NB: Code pretty much exactly the same as toolic's post... Just wanted to show TIMTOWTDI!

Just a something something...

Create A New User
Node Status?
node history
Node Type: note [id://851709]
help
Chatterbox?
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others drinking their drinks and smoking their pipes about the Monastery: (5)
As of 2018-04-19 22:11 GMT
Sections?
Information?
Find Nodes?
Leftovers?
Voting Booth?
My travels bear the most uncanny semblance to ...

Results (75 votes). Check out past polls.

Notices?