行IDを持つ列の平均を計算する方法は?

行IDを持つ列の平均を計算する方法は?

データのIDが同じ場合(私の場合は同じ日ですが異なる時間)、平均を計算したいと思います。時間別/時間別データに基づいて、私のデータの1日平均を計算します。私のデータは以下の通りです。

Date        hour        value 
06/21/1978  14:00:00    1
06/21/1978  15:00:00    2
06/21/1978  16:00:00    3
06/21/1978  17:00:00    4
06/21/1978  18:00:00    5
06/21/1978  19:00:00    6
06/21/1978  20:00:00    7
06/21/1978  21:00:00    7
06/21/1978  22:00:00    9
06/21/1978  23:00:00    10
06/22/1978  00:00:00    5
06/22/1978  01:00:00    5
06/22/1978  02:00:00    5
06/22/1978  03:00:00    7
06/22/1978  04:00:00    8
06/22/1978  05:00:00    9
06/22/1978  06:00:00    22
06/22/1978  07:00:00    56
06/22/1978  08:00:00    9
06/22/1978  09:00:00    12
06/22/1978  10:00:00    3
06/22/1978  11:00:00    5
06/22/1978  12:00:00    7

私が望む出力は

Date        value
06/21/1978  5.4
06/22/1978  11.7692307692

ベストアンサー1

これは本質的にStephaneのソリューションと同じですawkが、Perlでコーディングされています。日付の順序が維持されます。

perl -ane 'if($.==1){print "$F[0]\t$F[2]\n"; next}
           $k{$F[0]}+=$F[2]; $l{$F[0]}++; 
           END{print "$_\t",$k{$_}/$l{$_},"\n" for (sort keys(%k))}' data

おすすめ記事