R语言利器之ddply

ddply()函数位于plyr包,用于对data.frame进行分组统计,与tapply有些类似

准备数据

# 使用stringsAsFactors=F来防止data.frame把向量转为factor
apache = data.frame(httpCode=c(200,200,200,404,404,500),
                    time=c(100,111,210,10,10,500),
                    api=c('index','index','logout','show','show','index'),
                    stringsAsFactors=F)

统计每个api的请求数

ddply(apache,.(api),summarize,number=length(api))
     api number
1  index      3
2 logout      1
3   show      2

统计每个api的各个httpCode的请求数:

a <- ddply(apache,.(api,httpCode),summarize,number=length(api))
     api httpCode number
1  index      200      2
2  index      500      1
3 logout      200      1
4   show      404      2

下面这个复杂些,根据上面的统计结果a,统计每个api所占比例

b <- ddply(a, 
          .(), 
          .fun=function(x){
              transform(x, percentage=with(x,ave(number,api,FUN=sum)/sum(number)))
          })
   .id    api httpCode number percentage
1 <NA>  index      200      2      0.333
2 <NA>  index      500      1      0.167
3 <NA> logout      200      1      0.167
4 <NA>   show      404      2      0.333

这就是说你可以根据需要写自己的统计函数

用ggplot画api占比图

ggplot(b,aes(x=reorder(api,percentage),y=percentage,fill=factor(httpCode))) + 
    geom_bar() +
    scale_y_continuous(labels = percent_format()) +
    coord_flip() +

在此输入图片描述

转载于:https://my.oschina.net/enyo/blog/162595

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值