在perl中,如何在第一列中找到按第二列中的值分组的值的总和

时间:2013-03-07 10:12:57

标签: arrays perl hash

我正在编写一个perl脚本,并在多次操作后获取值,如下所示:

'John', 10, .20
'John', 20, .05
'Paul', 50, .10
'Joe', 70, .03
'Joe', 12, .30

现在,我需要执行以下操作:

  1. 汇总按第1列分组的第2列的值。
  2. 将第2列乘以第3列,然后再次找到按第1列分组的答案总和。
  3. 我试图看看这是否只能通过将此数组转换为基于第一列的哈希或者是否有更好的方法来实现。

    请注意,这不是一项家庭作业。我试图通过屏蔽原始值来简化数据。值是上面给出的类型。

    预期输出:

    'John', 30, 0.1
    'Paul', 50, 0.1
    'Joe',  82, 0.06
    

1 个答案:

答案 0 :(得分:1)

在尝试“清理”它以便在此处发布时找出答案:

我的代码有效:

while (<FILE>)
{
    chomp($_);
    my ($name, $count, $percent) = split("\t");
    $hash{$name}{"count"} += $count;
    if ($count != 0)
    {
        $sonar_out_hash{$name}{"value"} += $percent * $count / 100;
    }
}

感谢@KrishnachandraSharma坚持要发帖。