2016-06-10 21 views
9

Örneğin, mpg veri kümesini örnek olarak, özellikle class ve cyl sütunları olarak kullanalım. Ben silindir değerine dayalı dolgu rengi tek class başına, kaç girişleri görebilir ve ayırt edebilir:ggplot ile toplanan veriler

library(ggplot2) 
p <- ggplot(mpg) 
p <- p + geom_bar(mapping=aes(x=class, fill=factor(cyl)), position=position_dodge()) 
print(p) 

enter image description here

ben görmek istiyorum ne olsa da, ortalamasıdır cyl'un farklı değerleri için giriş sayısı (class uyarınca). Temel olarak, yukarıdaki arsaya bakarsanız, sınıf başına tek bir çubuk istiyorum; yüksekliği, bu sınıf için renkli çubukların ortalama yüksekliği olmalıdır. Veri çerçevesi ön işlenmesi ile bu sonucu almak mümkün

, örneğin: ggplot2 ne kadar güçlü verilen Ancak

enter image description here

: my istenen çıktı verir

df <- aggregate(formula=cyl~class, data=mpg, FUN=function(x) { length(x)/length(unique(x)) }) 
p <- ggplot(df) 
p <- p + geom_bar(mapping=aes(x=class, y=cyl), stat='identity') 
p <- p + ylab('average count') 

O , Bu ggplot fonksiyonları ile mümkün olup olmadığını merak ediyorum. Bu, belirli bir stat (belki group=cyl? Ile) kullanmayı gerektirir, ancak yapamıyorum.

Biz ara adımlar olmadan istenilen sonucu üretmek için düz stat_summary() içine formülünü takabilirsiniz
+0

.org/current/stat_summary.html) – user3631369

+0

@ user3631369 Şu anda onunla oynuyorum, ancak sonuç almıyorum. Silindir alanı üzerinde toplanamıyorum. – natario

cevap

13

: //docs.ggplot2: stat_summary` `bir göz [link] (http ver

library(ggplot2) 
ggplot(mpg) + 
    stat_summary(aes(x = class, y = cyl), 
       fun.y = function(x) length(x)/length(unique(x)), 
       geom = "bar") 

enter image description here

+0

, data.frame'deki diğer değişkenlere dayanan 'fun.y' bir toplama işlevini iletmenin bir yolu var mı? (Yani, her grupta bir miktar hesaplayabilirim - bir şekilde bunu işe alamadım ...) –

+0

Bir örnek verebilir misiniz? Belki yeni sorular sor – mtoto