3

解決策を探していじった後、箱ひげ図に加重平均を表示しようとして助けを求めています(これをggplot2メーリングリストにもクロスポストしようとしました)。

以下におもちゃの例を示します。

#data

value <- c(5, 7, 8, 6, 7, 9, 10, 6, 7, 10)
category <- c("one", "one", "one", "two", "two", "two",
              "three", "three", "three","three")
weight <- c(1, 1.2, 2, 3, 2.2, 2.5, 1.8, 1.9, 2.2, 1.5)
df <- data.frame(value, category, weight)

#unweighted means by category
ddply(df, .(category), summarize, mean=round(mean(value, na.rm=TRUE), 2))

  category mean
1      one 6.67
2    three 8.25
3      two 7.33

#weighted means by category
ddply(df, .(category), summarize, 
          wmean=round(wtd.mean(value, weight, na.rm=TRUE), 2))

  category wmean
1      one  7.00
2    three  8.08
3      two  7.26

#unweighted means added to boxplot (which works fine)
ggplot(df, aes(x = category, y = value, weight = weight)) + 
   geom_boxplot(width=0.6,  colour = I("#3366FF")) + 
   stat_summary( fun.y ="mean", geom ="point", shape = 23, 
                 size = 3, fill ="white") 

私の質問は、箱ひげ図に加重平均ではなく加重平均を表示するにはどうすればよいですか?

4

1 に答える 1

5

加重平均を新しいデータ フレームとして保存し、それを使用してプロットすることができますgeom_point()。引数は、呼び出しinherit.aes=FALSEで提供された情報を継承せずにポイントがプロットされることを保証しggplot()ます。

library(Hmisc)
library(plyr)
library(ggplot2)
df.wm<-ddply(df, .(category), summarize, 
             wmean=round(wtd.mean(value, weight, na.rm=TRUE), 2))

ggplot(df, aes(x = category, y = value, weight = weight)) + 
  geom_boxplot(width=0.6,  colour = I("#3366FF")) + 
  geom_point(data=df.wm,aes(x=category,y=wmean),shape = 23, 
             size = 3, fill ="white",inherit.aes=FALSE)

ここに画像の説明を入力

于 2013-04-25T05:31:59.523 に答える