【R筆記】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      32 logout      13   show      2

統計每個api的各個httpCode的請求數:

a <- ddply(apache,.(api,httpCode),summarize,number=length(api))
     api httpCode number
1  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 percentage
1 <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() +

在此輸入圖片描述

 






免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM