使用R来获得波动性并使峰值达到平均值。互联网流量数据的比率

时间:2011-02-20 20:41:20

标签: r statistics average data-analysis volatility

对于R数据集中的以下十天的每个小时,我有以下网络流量数据。

   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

如图所示,一小时内也会重复分类。我需要计算这些不同应用类别的波动率和高峰小时与平均小时比率。

波动率:每小时交易量的标准差除以小时平均值。

高峰时段平均小时比率:最大小时与体积的体积比。该申请的平均时数。

那么如何汇总和计算每个类别的这两个统计数据呢?我是R的新手,对如何聚合和获得所提到的平均值知之甚少。

因此,最终结果看起来像这样,首先通过对音量求和然后计算两个统计数据,在一个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 )
    }
)

但这不是我所希望的。我想要每个类别的统计数据,其中所有小时数首先汇总到24小时,然后汇总数量,然后计算波动率和PA比率。有任何改进建议吗?

1 个答案:

答案 0 :(得分:1)

你需要分两个阶段进行(使用plyr包):首先,正如你所指出的,同一类别可以有多个Day-Hour组合,所以我们首先聚合,因为每个类别,每小时内的总数,,无论当天

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