我在Ubuntu中使用R Studio,并带有标准的更新R和ggplot2

我尝试在ggplot中创建直方图,并按组将数据分开。

我需要绘图的y轴来说明子面网格划分的子组中每个bin的频率。

例如,如果我在数据中有两个条目

a group
1 1
2 2


我需要使用facet_grid按组划分,然后显示a代表1的条形,这是组1中示例的100%,反之亦然。

我发现这样做的方法是使用(..count ..)/ sum(.. count)
但是sum(.. count ..)会计算整个数据帧中的频率,并且会给我不想要的结果,

我找不到深度使用..count的良好文档。

question about special ggplot variables

another question about ..count..

文档中没有非常全面的内容,

这是我正在使用的示例代码

df <- data.frame(a = 1:10, b = 1:10, group = c(rep(1,5),rep(2,5)))
p<-ggplot(df) + geom_histogram(aes(x = a, y = (..count..)/sum(..count..))) +
   facet_grid(group ~ .)


您可以看到y轴将包含0.1作为最大值,例如,我希望显示1个值中的100%位于组1中。等等

编辑:

感谢Jimbou给出的答案和对适用于离散数据的精心构建的遍历的引用,请注意,我在这里遇到的真正问题将需要使用连续数据,并且将多个值组合在一起的垃圾箱,此外,还有没有有关如何使用..count ..函数执行此操作的适当文档,因此,我认为这对于找到解决方案而不是使用漫游非常重要

最佳答案

这是dplyr解决方案。

df%>% group_by(group)%>%mutate(n = n(), prop = n/sum(n))

07-24 09:52
查看更多