さまざまなカテゴリの観測値の割合をプロットするためのより良い方法についてのアドバイスを探しています。
次のようなデータフレームがあります。
cat1 <- c("high", "low", "high", "high", "high", "low", "low", "low", "high", "low", "low")
cat2 <- c("1-young", "3-old", "2-middle-aged", "3-old", "2-middle-aged", "2-middle-aged", "1-young", "1-young", "3-old", "3-old", "1-young")
df <- as.data.frame(cbind(cat1, cat2))
この例では、値が「高」である各年齢層の割合と、値が「低」である各年齢層の割合をプロットしたいと思います。より一般的には、カテゴリ2の値ごとに、カテゴリ1の各レベルに該当する観測値の割合 をプロットしたいと思います。
次のコードは正しい結果を生成しますが、プロットする前に手動でカウントして除算するだけです。ggplot内でその場でこれを行う良い方法はありますか?
library(plyr)
count1 <- count(df, vars=c("cat1", "cat2"))
count2 <- count(df, "cat2")
count1$totals <- count2$freq
count1$pct <- count1$freq / count1$totals
ggplot(data = count1, aes(x=cat2, y=pct))+
facet_wrap(~cat1)+
geom_bar()
この前のstackoverflowの質問は、次のコードで同様のことを提供します。
ggplot(mydataf, aes(x = foo)) +
geom_bar(aes(y = (..count..)/sum(..count..)))
しかし、分母に「sum(.. count ..)」(すべてのビンのカウントの合計を与える)は必要ありません。むしろ、「cat2」カテゴリのそれぞれの数の合計が必要です。stat_binのドキュメントも調べました。
これを機能させるためのヒントや提案をいただければ幸いです。