首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用R得到波动率,用峰值得到avg。网络流量数据比

用R得到波动率,用峰值得到avg。网络流量数据比
EN

Stack Overflow用户
提问于 2011-02-20 20:41:20
回答 1查看 1.8K关注 0票数 3

我在下面的网络流量数据为十天期间的每一个小时如下在R数据集中。

代码语言:javascript
复制
   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

正如所见,在一个小时内也有重复的类别。我需要计算这些不同应用类别的波动率和高峰时间与平均小时的比率。

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

高峰时刻到avg。小时比率:最大小时与第一卷的体积之比。申请的平均时间。

那么,我如何对每个类别进行汇总和计算这两个统计呢?我对R并不熟悉,也不太了解如何聚合和得到上述平均值。

因此,最后的结果将是这样的:首先,每个类别的卷被聚集在一个24小时的周期中,方法是将体积相加,然后计算两个统计量。

代码语言:javascript
复制
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

编辑:普莱尔把我弄到这个地步了。

代码语言:javascript
复制
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比率计算。有改进的建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-02-20 22:15:00

您需要分两个阶段(使用plyr包):首先,正如您所指出的,对于同一类别,可以有多个日时组合,因此我们首先对每个类别在每小时内汇总其总数,而不管是哪一天。

代码语言:javascript
复制
df1 <- ddply( df, .(Hour, Category), summarise, Volume = sum(Volume))

然后你得到你的数据:

代码语言:javascript
复制
> 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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5059869

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档