スラム;一定期間平均10分ごと文書

スラム;一定期間平均10分ごと文書

たとえば、09:00:00 - 16:59:59の間の毎秒の形式のファイルがあります。

[...]
10:59:49,76.77
10:59:50,38.78
10:59:51,23.23
10:59:52,12
10:59:53,26.47
10:59:54,10.2
10:59:55,32.67
10:59:56,14
10:59:57,42
10:59:58,100
10:59:59,100
[...]

データをグラフで作成しようとすると、データがまとめすぎて分かりにくいので、平均を求めてもっと美しくしたいと思います。

たとえば、ファイル内の10分ごとに平均値をどのように見つけることができますか?

09:00:00 - 09:09:59
09:10:00 - 09:19:59
..
..
10:00:00 - 10:09:59
10:10:00 - 10:19:59
and so on...

私は元の平均を見つけるためにawkを使用する予定でしたが、それを実行するために10分のクラスターを抽出する方法を見つけるのに苦労しています。

awk -F "," '{ sum += $2; n++ } END { if (n > 0) print sum / n; }' test_file

テスト用のタイムスタンプを生成するには、サンプルコードを使用してください。

#!/bin/bash

seq -f "%02g" 0 59 > tmp.sec
seq -f "%02g" 30 59 > tmp.firstmin

while read line
do
    cat tmp.sec | sed "s/^/09:$line:/;s/$/,$RANDOM/"
done<"tmp.firstmin"

for i in `seq 10 15`
do
    while read line
    do
        cat tmp.sec | sed "s/^/$i:$line:/;s/$/,$RANDOM/"
    done<"tmp.sec"
done

ベストアンサー1

区切り文字を使用してから秒を無視して分だけ保持でき:ます,

$ awk -F[:,] '{
                thisInterval = substr($2,1,1); 
                a[$1":"thisInterval"0"]+=$4; 
              } 
              END{
                    PROCINFO["sorted_in"]="@ind_str_asc"; 
                    for(t in a){print t,a[t]/600
              }
            }' 

上記を処理するにはGNU awkが必要ですPROCINFOが、後でいつでも直接並べ替えることができます。また、10分ごとに600個のデータポイントを想定しています。

おすすめ記事