我希望您能给出关于更好的绘制不同类别观测比例的建议。我有一个数据框,看起来像这样:
在这个例子中,我想绘制每个年龄组“高”值的比例和每个年龄组“低”值的比例。更一般地,我想要绘制针对category 2每个取值的情况下,落入category 1每个级别中的观测百分比。以下代码可以生成正确的结果,但需要在绘图前手动计数和除法运算。是否有一种好的方法可以在ggplot内部自动完成?
但是我不想要“sum(..count..)”作为分母 - 它会给出所有箱子的计数总和 - 而是想要每个“cat2”类别的计数总和。我也研究了stat_bin文档。
如果您能提供任何有关如何使其工作的提示和建议,我将不胜感激。
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))
在这个例子中,我想绘制每个年龄组“高”值的比例和每个年龄组“低”值的比例。更一般地,我想要绘制针对category 2每个取值的情况下,落入category 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文档。
如果您能提供任何有关如何使其工作的提示和建议,我将不胜感激。