3

Rデータセットには、次の10日間の1時間ごとのネットワークトラフィックデータがあります。

   Day   Hour         Volume          Category
    0    00            100            P2P
    0    00            50             email
    0    00            200            gaming
    0    00            200            video
    0    00            150            web
    0    00            120            P2P
    0    00            180            web
    0    00            80             email
    ....
    0    01            150            P2P
    0    01            200            P2P
    0    01             50            Web
    ...
    ...
    10   23            100            web
    10   23            200            email
    10   23            300            gaming
    10   23            300            gaming

ご覧のとおり、1時間以内にカテゴリの繰り返しもあります。これらのさまざまなアプリケーションカテゴリのボラティリティとピーク時と平均時の比率を計算する必要があります。

ボラティリティ:1時間あたりのボリュームを1時間あたりの平均で割った標準偏差。

平均までのピーク時間 時間比率:ボリュームに対する最大時間のボリュームの比率。そのアプリケーションの平均時間の。

では、カテゴリごとにこれら2つの統計を集計して計算するにはどうすればよいですか?私はRを初めて使用し、前述のように平均を集計して取得する方法についてあまり知識がありません。

したがって、最終的な結果は次のようになります。最初に、各カテゴリのボリュームが、ボリュームを合計してから2つの統計を計算することにより、単一の24時間で集計されます。

Category    Volatility      Peak to Avg. Ratio
Web            0.55            1.5
P2P            0.30            2.1
email          0.6             1.7
gaming         0.4             2.9

編集:plyrはこれまで私を手に入れました。

stats = ddply(
    .data = my_data
    , .variables = .( Hour , Category)
    , .fun = function(x){
        to_return = data.frame(
            volatility = sd((x$Volume)/mean(x$Volume))
            , pa_ratio = max(x$Volume)/mean(x$Volume)
        )
        return( to_return )
    }
)

しかし、これは私が望んでいたことではありません。カテゴリごとの統計が必要です。ここでは、ボリュームを合計してから、ボラティリティとPA比率を計算することにより、1日のすべての時間が最初に24時間に集約されます。改善のための提案はありますか?

4

1 に答える 1

1

(パッケージを使用して)2段階で行う必要がありplyrます。最初に、ご指摘のとおり、同じカテゴリに対して複数の日時間コンボが存在する可能性があるため、最初に、カテゴリごとに、各時間内の合計を集計します。 、日を問わず

df1 <- ddply( df, .(Hour, Category), summarise, Volume = sum(Volume))

次に、統計を取得します。

> ddply(df1, .(Category), summarise,
+            Volatility = sd(Volume)/mean(Volume),
+            PeakToAvg = max(Volume)/mean(Volume) )

  Category Volatility PeakToAvg
1      P2P  0.3225399  1.228070
2      Web         NA  1.000000
3    email  0.2999847  1.212121
4   gaming  0.7071068  1.500000
5    video         NA  1.000000
6      web  0.7564398  1.534884
于 2011-02-20T22:15:00.577 に答える