我在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))