0

私はperlスクリプトを書いており、次のように多くの操作の後に値を取得しています:

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

ここで、次の操作を行う必要があります。

  1. 列 1 でグループ化された列 2 の値を合計します。
  2. 列 2 に列 3 を掛けて、列 1 でグループ化されたこれらの回答の合計を求めます。

この配列を最初の列に基づいてハッシュに変換することによってのみこれを達成できるかどうか、またはこれを行うためのより良い方法があるかどうかを確認しようとしています。

これは宿題の演習ではないことに注意してください。元の値をマスキングして、データを単純化しようとしました。値は上記のタイプです。

期待される出力:

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

1 に答える 1

2

ここに投稿するために「クリーン」しようとしているときに答えを見つけました:

動作する私のコード:

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に感謝します。

于 2013-03-07T10:34:33.737 に答える