我正在寻找更好的方法来绘制不同类别的观察比例的建议。
我有一个看起来像这样的数据框:
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文档。
对于如何完成这项工作的任何提示和建议,我将不胜感激。