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 13 show 2

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

a <- ddply(apache,.(api,httpCode),summarize,number=length(api))
api httpCode number
1 index 200 2
2 index 500 13 logout 200 14 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.1673 <NA> logout 200 1 0.1674 <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() +

【R笔记】R语言利器之ddply的更多相关文章

  1. R语言利器之ddply和aggregate

    ddply和aggregate是两个用来整合数据的功能强大的函数. aggregate(x, ...) 关于aggregate()函数的使用在<R语言实战>中P105有简单描述,这里重新说 ...

  2. 【R笔记】R语言函数总结

    R语言与数据挖掘:公式:数据:方法 R语言特征 对大小写敏感 通常,数字,字母,. 和 _都是允许的(在一些国家还包括重音字母).不过,一个命名必须以 . 或者字母开头,并且如果以 . 开头,第二个字 ...

  3. R笔记(1):formula和Formula

    #####开一个新的系列.关于R的一些笔记,就是遇到过的一些问题的简单整理.可能很基本,也可能没什么大的用处,作为一个记录而已.------------------------------------ ...

  4. K&R《C语言》书中的一个Bug

    最近在重温K&R的C语言圣经,第二章中的练习题2-2引起了我的注意. 原题是: Write a loop equivalent to the for loop above without us ...

  5. php调试利器之phpdbg

    信海龙的博客 php调试利器之phpdbg 简介 PHPDBG是一个PHP的SAPI模块,可以在不用修改代码和不影响性能的情况下控制PHP的运行环境. PHPDBG的目标是成为一个轻量级.强大.易用的 ...

  6. Win下必备利器之Cmder

    诚言,对于开发码字者,Mac和Linux果断要比Windows更贴心;但只要折腾下,Windows下也是有不少利器的.之前就有在Windows下效率必备软件一文中对此做了下记载:其虽没oh-my-zs ...

  7. 【转载】OpenGL超级宝典笔记——GLSL语言基础

    变量 GLSL的变量命名方式与C语言类似.变量的名称可以使用字母,数字以及下划线,但变量名不能以数字开头,还有变量名不能以gl_作为前缀,这个是GLSL保留的前缀,用于GLSL的内部变量.当然还有一些 ...

  8. 大数据并行计算利器之MPI/OpenMP

    大数据集群计算利器之MPI/OpenMP ---以连通域标记算法并行化为例 1 背景 图像连通域标记算法是从一幅栅格图像(通常为二值图像)中,将互相邻接(4邻接或8邻接)的具有非背景值的像素集合提取出 ...

  9. C#编程利器之二:结构与枚举(Structure and enumeration)【转】

    C#编程利器之二:结构与枚举(Structure and enumeration) 在上一篇文章中,介绍了类如何封装程序中的对象.而实际中,出了类可以封装对象外,结构和枚举也可以封装一些对象,本文将着 ...

随机推荐

  1. Python之json编码

    一.json JSON: JavaScript Object Notation(JavaScript 对象表示法) JSON 是存储和交换文本信息的语法 1.json轻量级:语法规则 JSON 语法是 ...

  2. 常用原生客户端js

    var el = document.createElement('pre'); // 创建 <pre></pre>元素 el.id = 'sss'; // 添加id <p ...

  3. 【CodeForces】841D. Leha and another game about graph(Codeforces Round #429 (Div. 2))

    [题意]给定n个点和m条无向边(有重边无自环),每个点有权值di=-1,0,1,要求仅保留一些边使得所有点i满足:di=-1或degree%2=di,输出任意方案. [算法]数学+搜索 [题解] 最关 ...

  4. spring自定义参数绑定(日期格式转换)

    spring参数绑定时可能出现 BindException(参数绑定异常),类似下面的日期绑定异常(前台传过来是String类型,实际的pojo是Date类型) default message [Fa ...

  5. shell脚本之while for if 语句和编写计划任务

    关于while循环: while do done 例如 1.关于内存的实时操作: (1).vim a.sh (2).输入以下while循环 (3)../a.sh执行脚本 2.自加一的操作: (1).v ...

  6. 连接Linux服务器:Win免费SSH客户端工具

    连接Linux服务器:Win免费SSH客户端工具 http://blog.csdn.net/jiangdou88/article/details/51585555

  7. 【bzoj3744】GTY的妹子序列

    大力分块+树状数组+主席树…… #include<bits/stdc++.h> #define N 50005 #define pa pair<int,int> #define ...

  8. iOS 动画整理

    序列帧动画 曾经项目里的一段源码: 1234567891011121314 UIImageView * activityImageView = [[UIImageView alloc] init];N ...

  9. 设计模式之笔记--简单工厂模式(Simple Factory)

    简单工厂模式(Simple Factory) 类图 描述 简单工厂: 一个抽象产品类,可以派生多个具体产品类: 一个具体工厂类: 工厂只能创建一个具体产品. 应用场景 汽车接口 public inte ...

  10. flask+gunicorn中文文件下载报错问题及解决

    导言 问题源起与一个静态文件下载的接口: from flask import Flask, current_app app = Flask(__name__) @app.route('/file_na ...