侧边栏壁纸
博主头像
落叶人生博主等级

走进秋风,寻找秋天的落叶

  • 累计撰写 130562 篇文章
  • 累计创建 28 个标签
  • 累计收到 9 条评论
标签搜索

目 录CONTENT

文章目录

R语言利器之ddply

2022-06-25 星期六 / 0 评论 / 0 点赞 / 94 阅读 / 1802 字

ddply()函数位于plyr包,用于对data.frame进行分组统计,与tapply有些类似准备数据# 使用stringsAsFactors=F来防止data.frame把向量转为factorap

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

准备数据

# 使用stringsAsFactors=F来防止data.frame把向量转为factorapache = 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 number1  index      32 logout      13   show      2

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

a <- ddply(apache,.(api,httpCode),summarize,number=length(api))     api httpCode number1  index      200      22  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 percentage1 <NA>  index      200      2      0.3332 <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() +

广告 广告

评论区